我可以将一条日志消息发送到特定的附加程序吗?
Can I send one log message to a particular appender?
我有一个使用文件追加器和控制台追加器的记录器。我的代码中有一行我只想转到控制台附加程序。有没有办法在不制作新记录器的情况下做到这一点?
或者,我可以制作另一个只使用控制台的记录器,但我似乎无法完成它。我能找到的所有示例都使用 class 或方法名称。我正在尝试使用我在 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:\Something\Log\IntegrationTests\IntegrationTests.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>
这是我尝试获取 "consoleOnly" Logger 的一行。
ILog log = LogManager.GetLogger("consoleOnly");
log.Debug("Poop");
我就是这样做的吗?
ILog log = LogManager.GetLogger("consoleOnly");
log.Debug("Poop");
这应该可以正常工作。但我认为你需要将 additivity 设置为 false,否则它也会使用根记录器进行记录。
例如
<logger name="consoleOnly" additivity="false">
<level value="ALL" />
<appender-ref ref="Console" />
</logger>
我有一个使用文件追加器和控制台追加器的记录器。我的代码中有一行我只想转到控制台附加程序。有没有办法在不制作新记录器的情况下做到这一点?
或者,我可以制作另一个只使用控制台的记录器,但我似乎无法完成它。我能找到的所有示例都使用 class 或方法名称。我正在尝试使用我在 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:\Something\Log\IntegrationTests\IntegrationTests.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>
这是我尝试获取 "consoleOnly" Logger 的一行。
ILog log = LogManager.GetLogger("consoleOnly");
log.Debug("Poop");
我就是这样做的吗?
ILog log = LogManager.GetLogger("consoleOnly");
log.Debug("Poop");
这应该可以正常工作。但我认为你需要将 additivity 设置为 false,否则它也会使用根记录器进行记录。
例如
<logger name="consoleOnly" additivity="false">
<level value="ALL" />
<appender-ref ref="Console" />
</logger>