Log4NET记录器类

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

我是一个Log4Net新手,为了将我的应用程序日志消息记录到日志文件中,我遇到了一些问题。我认为Web.config文件配置有问题。这是我在web.config中的一个片段:

<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();
 }