代码之家  ›  专栏  ›  技术社区  ›  Bill Greer

第二个log4net记录器未写入唯一文件

  •  1
  • Bill Greer  · 技术社区  · 6 年前

    我有一个应用程序正在使用anotar.log4net进行日志记录。我无法删除anotar.log4net,因为其他团队成员正在使用它。我想添加我自己的日志文件。我在app.config中添加了一个名为bgdev的附加文件。我看过那篇文章 here 看看别人是如何完成有两个文件附加器的任务的。下面的所需行为是让每个日志记录器记录到自己的文件中。所有内容都记录到mainlog.txt。这是因为app.config设置有问题还是因为我安装了Anotar库?

    <log4net>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="MainLog.txt"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <maxSizeRollBackups value="5"/>
      <maximumFileSize value="10MB"/>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
      </layout>
    </appender>
    <appender name="BGDEV" type="log4net.Appender.RollingFileAppender">
      <file value="BG_Log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <datePattern value="yyyyMMdd" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true"/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="FATAL" />
      </filter>
    </appender>
    <root>
      <level value="INFO"/>
      <appender-ref ref="FileAppender"/>
    </root>
    <logger additivity="false" name="BGDev">
      <level value="INFO"/>
      <appender-ref ref="BGDev" />
    </logger>
    

    在代码中,我创建一个记录器并使用它。我的配置文件有什么问题吗?还是因为我正在使用

    private static readonly ILog otherLog = LogManager.GetLogger("BGDEV");
    otherLog.Info("TEST OTHER LOG");
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Iridium    6 年前

    在代码和配置中命名有几个问题。名称区分大小写-您正在定义一个名为 BGDev 但你打电话 GetLogger("BGDEV") ,因为没有名为 BGDEV 存在,它会返回到根记录器。

    你的记录员叫 BGDEV 还引用名为 BGDEV 但是,同样地,不存在这样的附加器,因为您用全大写的名称定义它。 BGDEV .

    最后,你的 BGDEV公司 记录器需要 <layout>...</layout> 否则,它将无法格式化日志消息。

    如果你解决了这些问题,它应该如你所期望的那样工作。