Log4NET记录器类
我是一个Log4Net新手,为了将我的应用程序日志消息记录到日志文件中,我遇到了一些问题。我认为Web.config文件配置有问题。这是我在web.config中的一个片段:Log4NET记录器类,log4net,log4net-configuration,log4net-appender,Log4net,Log4net Configuration,Log4net Appender,我是一个Log4Net新手,为了将我的应用程序日志消息记录到日志文件中,我遇到了一些问题。我认为Web.config文件配置有问题。这是我在web.config中的一个片段: <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4ne
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
</root>
<logger name="Tomahawk" additivity="False">
<level value="ALL" />
<appender-ref ref="MyFileAppender" />
</logger>
<appender name="MyFileAppender" type="log4net.Appender.FileAppender">
<file value="application.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
在C代码中,我所做的就是:
ILog log = LogManager.GetLogger("Tomahawk");
log.info("Some debug info...");
但什么也没发生。日志文件中未记录任何内容
有人对此问题有任何线索吗?请尝试以下方法:
步骤1-创建一个名为log4net.config的单独文件
步骤2从xml中删除这些行
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
步骤5-在Startup.cs类中,让记录器使用此全局变量
private static ILog log = LogManager.GetLogger(typeof(Startup));
步骤6-在配置方法中,按如下方式记录信息消息
if (env.IsDevelopment())
{
log.Info("Yeap! We are in development now! That's great!");
app.UseDeveloperExceptionPage();
}
第7步-打开你的应用程序。日志文件,看 检查
LogManager.GetRepository().Configured的值以查看log4net是否正在拾取配置-在某些情况下,程序集属性没有正确拾取配置,例如,如果该属性不在启动项目中。如果已配置,请检查允许程序写入文件的权限。您好,我根据您的答复检查了该值。。。并且该值为False。我发现的一个解决方法是以这种方式调用XmlConfigurator的Configure方法:在应用程序启动时调用log4net.Config.XmlConfigurator.Configure()。这样做。。。一切都很顺利。我想知道为什么在XML web.config文件中包含atribute都不起作用…属性很整洁,但它们可能很挑剔-“使用属性可以更清晰地定义从何处加载应用程序的配置……如果使用配置属性,则必须调用log4net以允许它读取属性。对LogManager.GetLogger的简单调用将导致读取和处理调用程序集上的属性。因此,必须在应用程序启动期间尽早进行日志记录调用,当然要在加载和调用任何外部程序集之前进行
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
private static ILog log = LogManager.GetLogger(typeof(Startup));
if (env.IsDevelopment())
{
log.Info("Yeap! We are in development now! That's great!");
app.UseDeveloperExceptionPage();
}