我決定使用log4net來處理我正在處理的應用程序的所有日誌記錄活動...閱讀完文檔後,我決定開始進行實驗,但在第一次嘗試失敗後嘗試log4net BasicConfigurator未在控制檯上打印
該應用程序正在使用MonoDevelop 3.0.3.2在相當標準的Debian 7發行版中使用C#開發,以便稍後部署在Linux機器上。
到目前爲止,代碼是微不足道的,它遵循log4net文檔中非常早期的步驟,並在文章末尾加以引用。
問題是記錄器不打印任何東西到控制檯;在試圖理解發生了什麼問題的同時,我用調試器研究了它;我看到日誌引用包含AppendersCollection,不幸是空的我猜在配置過程中某些東西不能正常工作,並且我沒有appender,因此沒有日誌輸出。
我錯過了什麼?任何建議? MonoDevelop-Linux-log4net的組合存在某種我不知道的問題嗎?
using System;
using log4net;
using log4net.Config;
namespace TestLog4Net
{
class MainClass
{
private static readonly ILog log = LogManager.GetLogger(typeof(MainClass));
public static void Main (string[] args)
{
BasicConfigurator.Configure();
Console.WriteLine ("Hello World!");
log.Info("Hello World!");
}
}
}
UPDATE
我做了一些測試,加載配置文件。 我創建了3個記錄器,每個記錄器都有自己的appender,兩個是滾動文件appender,另一個是控制檯appender。 然後我登錄「Hello World!」在每個記錄器上。 滾動文件記錄器按預期工作,而無法找到ConsoleLogger的輸出。我用調試器和木012檢查對象不顯示一個空的AppenderCollection,但沒有輸出無論如何。您可以在下面找到更新後的代碼以及配置文件。
using System;
using log4net;
using log4net.Config;
namespace TestLog4Net
{
class MainClass
{
public static void Main (string[] args)
{
XmlConfigurator.Configure(new System.IO.FileInfo("app.config"));
ILog rflogger1 = LogManager.GetLogger("RFLoggerOne");
ILog rflogger2 = LogManager.GetLogger("RFLoggerTwo");
ILog clogger = LogManager.GetLogger("CLogger");
rflogger1.Info("Hello World!");
rflogger2.Info("Hello World!");
clogger.Info("Hello World!");
Console.WriteLine ("Hello World!");
}
}
}
<log4net>
<appender name="CAppender" type="log4net.Appender.AnsiColorTerminalAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="RFAppender1" type="log4net.Appender.RollingFileAppender">
<file value="rf1.log"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1000000"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline"/>
</layout>
</appender>
<appender name="RFAppender2" type="log4net.Appender.RollingFileAppender">
<file value="rf2.log" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %thread %logger - %message%newline" />
</layout>
</appender>
<logger name="CLogger">
<level value="ALL"/>
<appender-ref ref="CAppender"/>
</logger>
<logger name="RFLoggerOne">
<level value="ALL"/>
<appender-ref ref="RFAppender1"/>
</logger>
<logger name="RFLoggerTwo">
<level value="ALL"/>
<appender-ref ref="RFAppender2"/>
</logger>
<root>
<level value="ALL"/>
</root>
</log4net>
你可以在你的app.config或/和log4net配置中顯示你的log4net配置嗎? – Peter 2014-09-04 15:13:35
@peer:附加的代碼應該使用BasicConfigurator,並根據文檔,不需要配置文件...在此期間,我用配置文件進行了一些測試,發現我遇到了問題與ConsoleAppender,而RollingFileAppender工作正常,讓我用新的代碼和配置文件更新原始帖子。 – BaroneAshura 2014-09-04 15:24:30