我可以向特定追加器发送一条日志消息吗?



我有一个使用文件追加器和控制台追加器的记录器。我的代码中有一行,我只想转到控制台应用程序。有没有办法在不制作一段时间新记录器的情况下做到这一点?

或者,我可以制作另一个仅使用控制台的记录器,但我似乎甚至无法完成。我能找到的所有示例都使用类或方法名称。我正在尝试使用我在 app.config 中提供的名称。

这是我的应用程序配置:

  <log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <!-- Pattern to output the caller's file name and line number -->
        <conversionPattern value="%level [%thread] %date - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="All" />
      </filter>
    </appender>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <file value="D:SomethingLogIntegrationTestsIntegrationTests.log" />
      <appendToFile value="false" />
      <rollingStyle value="Size" />
      <maximumFileSize value="250MB" />
      <maxSizeRollBackups value="20" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level [%thread] %date - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="All" />
      </filter>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="Console" />
      <appender-ref ref="RollingFile" />
    </root>
    <logger name="consoleOnly">
      <level value="ALL" />
      <appender-ref ref="Console" />
    </logger>
  </log4net>

这是我尝试获取"控制台仅"记录器的一行。

ILog log = LogManager.GetLogger("consoleOnly");
log.Debug("Poop");

我就是这样做的吗?

ILog log = LogManager.GetLogger("consoleOnly"(;

.log。调试("便便"(;

这应该可以正常工作。 但我认为您需要将可加性设置为 false,否则它也将使用根记录器进行记录。

例如。

<logger name="consoleOnly" additivity="false">
   <level value="ALL" />
   <appender-ref ref="Console" />
</logger>

最新更新