【发布时间】:2014-10-21 18:22:47
【问题描述】:
像许多其他人一样,我正在尝试将 Log4net 实现到我的 C#.net 应用程序中,但我无法让它为我工作。我做了很多搜索(包括在这个网站上)并尝试了许多不同的解决方案,但还没有对我有用。所以一个简单的问题:我做错了什么???
Assembly.cs 包含以下行。
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
App.config 包含以下内容。
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL"/>
<appender-ref value="RollingFileAppender"/>
<appender-ref value="ConsoleAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\Temp\Minion.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{Y-m-d H:i:s.u} | %thread | %method | %level | %message%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%date{Y-m-d H:i:s.u} | %thread | %method | %level | %message%newline" />
</layout>
</appender>
</log4net>
我的代码在课程的开头包含以下内容。
private static readonly ILog logger =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
这些测试在 main 函数的开头。
logger.Debug("test1");
logger.Info("test2");
logger.Warn("test3");
logger.Error("test4");
logger.Fatal("test5");
编辑:
一个提示导致 log4net 初始化期间出现以下错误。
log4net:ERROR XmlHierarchyConfigurator: No appender named [] could be found.
log4net:ERROR Appender named [] not found.
log4net:ERROR XmlHierarchyConfigurator: No appender named [] could be found.
log4net:ERROR Appender named [] not found.
【问题讨论】:
-
顺便说一句,我建议不要使用
[XmlConfigurator]属性,因为这在 log4net 初始化时并不清楚——而且它有一个不总是有效的坏习惯(在 ASP.NET 站点中) , 例如)。相反,请从您的Main()显式调用XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile))。 -
您尝试拨打
XmlConfigurator.Configure()吗? -
杰罗恩:啊。是的,我做到了,但我之前一定有错字。这次我实际上有一个日志文件要查看。感谢您提示第二次拍摄。我会检查一下并报告。
-
这种格式很糟糕。用新信息编辑了主要帖子。