是否有可能讓log4net將其日誌文件相對於當前工作目錄而不是應用程序所在的目錄?你如何使log4net輸出到當前工作目錄?
換句話說,如果我跑.. \ MyApp.exe的,我不希望在日誌文件.. \我希望他們在\
是否有可能讓log4net將其日誌文件相對於當前工作目錄而不是應用程序所在的目錄?你如何使log4net輸出到當前工作目錄?
換句話說,如果我跑.. \ MyApp.exe的,我不希望在日誌文件.. \我希望他們在\
我結束了在看log4net的源確定我可以實現自己的appender,擴展FileAppender並覆蓋File屬性。
我只是在我的配置中使用CWDFileAppender。
不從配置文件可能的,因爲每here 。
public static log4net.Appender.IAppender CreateFileAppender(string name,
string fileName)
{
log4net.Appender.FileAppender appender = new
log4net.Appender.FileAppender();
appender.Name = name;
appender.File = fileName;
appender.AppendToFile = true;
log4net.Layout.PatternLayout layout = new
log4net.Layout.PatternLayout();
layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n";
layout.ActivateOptions();
appender.Layout = layout;
appender.ActivateOptions();
return appender;
}
然後,您可以將其與記錄如下關聯:如果要手動從你的程序中,雖然配置它有可能
AddAppender("Log4net.MainForm", CreateFileAppender("FileAppender",
Path.Combine(Directory.GetCurrentDirectory(), "foo.log")));
這證實了我的想法。我用一個非常簡單的方式發佈了我自己的答案,使其可配置。 – 2009-12-21 21:29:41
嘿kiko,把這樣的更新在你的答案。保持線程清潔,除非你對自己的問題有正確的答案... – 2009-12-18 07:56:39
這是對我自己問題的「正確」答案。 – 2009-12-21 21:28:21
雖然我從RollingFileAppender繼承,但這對我很好。我也把它放在我使用的通用庫中,這樣我就可以在我的所有項目中使用它。如果你這樣做,記得在你的配置中指定程序集。 –
Stuntbeaver
2012-04-27 10:56:51