我如何了解普通日志记录中是否存在记录器?
How can I understand if a logger exists in common logging?
我在我的应用程序中使用 Common.Logging
并且我创建了一个单独的记录器来写入一些调试信息。
我可以使用
检索我的记录器
LogManager.GetLogger("MyCustomLogger");
但是,如果找不到此记录器,我会获取根记录器。我希望如果找不到记录器,则不会记录任何内容。由于我的应用程序的结构,我无法删除根记录器。
如何使用 Common.Logging
实现此行为?
配置是
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1213">
<!-- Common Logging assumes that log4net is initialized -->
<arg key="configType" value="EXTERNAL"/>
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/debug.txt"/>
<appendToFile value="true"/>
<maximumFileSize value="10000KB"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="5"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<appender name="MyCustomLogAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/queries.txt" />
<appendToFile value="true" />
<maximumFileSize value="50000KB" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
<root>
<level value="DEBUG"/>
<appender-ref ref="FileAppender"/>
</root>
<logger name="MyCustomLog" additivity="false">
<level value="DEBUG" />
<appender-ref ref="MyCustomLogAppender" />
</logger>
</log4net>
我遇到了同样的问题。如果未配置指定的记录器,我想 return。
我找到的解决方案:
private static ILog _log;
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (LogManager.Exists("MyCustomLoggerName") == null)
return;
if (_log == null)
_log = LogManager.GetLogger("MyCustomLoggerName");
...
}
我无法声明 private static readonly ILog _log = LogManager.GetLogger("MyCustomLoggerName");
因为那时 LogManager.Exists("MyCustomLoggerName")
return 编辑了一些东西...
在 log4net.config
文件中,我为此记录器设置了 additivity="false"
。
我在我的应用程序中使用 Common.Logging
并且我创建了一个单独的记录器来写入一些调试信息。
我可以使用
检索我的记录器LogManager.GetLogger("MyCustomLogger");
但是,如果找不到此记录器,我会获取根记录器。我希望如果找不到记录器,则不会记录任何内容。由于我的应用程序的结构,我无法删除根记录器。
如何使用 Common.Logging
实现此行为?
配置是
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1213">
<!-- Common Logging assumes that log4net is initialized -->
<arg key="configType" value="EXTERNAL"/>
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/debug.txt"/>
<appendToFile value="true"/>
<maximumFileSize value="10000KB"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="5"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<appender name="MyCustomLogAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/queries.txt" />
<appendToFile value="true" />
<maximumFileSize value="50000KB" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
<root>
<level value="DEBUG"/>
<appender-ref ref="FileAppender"/>
</root>
<logger name="MyCustomLog" additivity="false">
<level value="DEBUG" />
<appender-ref ref="MyCustomLogAppender" />
</logger>
</log4net>
我遇到了同样的问题。如果未配置指定的记录器,我想 return。
我找到的解决方案:
private static ILog _log;
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (LogManager.Exists("MyCustomLoggerName") == null)
return;
if (_log == null)
_log = LogManager.GetLogger("MyCustomLoggerName");
...
}
我无法声明 private static readonly ILog _log = LogManager.GetLogger("MyCustomLoggerName");
因为那时 LogManager.Exists("MyCustomLoggerName")
return 编辑了一些东西...
在 log4net.config
文件中,我为此记录器设置了 additivity="false"
。