我试图通过遵循一些教程并阅读过多的关于log4net的问题来使用log4net,因为我无法使其正常运行。
我在.config
文件的顶部
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="log4net.log" />
<appendToFile value="true" />
<maximumFileSize value="500KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
我在我的AssemblyInfo文件上添加了这一行
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
并尝试像这样在mt服务中使用记录器
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
要么
private static ILog Log = LogManager.GetLogger(typeof(MyService));
但是,从未创建过文件,也没有任何其他迹象表明正在发生任何事情。
如何正确使用此记录器?
最佳答案
创建一个log4net DebugAppender以在Visual Studio输出窗口中查看log4net的输出,这应该给您一些有关此问题的指示。
添加到app.config中:
<appSettings>
<!-- log4net configuration when running in debug mode. -->
<add key="log4net.Internal.Debug" value="true" />
</appSettings>
在log4net.config中添加一个新的调试附加程序:
<appender name="DebugAppender" type="log4net.Appender.DebugAppender">
<immediateFlush value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
并将新的appender添加到log4net.config根目录:
<root>
<level value="ALL" />
<appender-ref ref="RollingFile" />
<appender-ref ref="DebugAppender" />
</root>
运行该应用程序,然后查看Visual Studio输出窗口,以查看log4net的内部日志记录。如果没有输出,则永远不会加载log4net.config文件。
关于c# - log4net没有输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38459860/