我正在为 Windows NT 服务使用 Log4Net 实现日志记录解决方案。我可以翻转配置文件中的开关以开始将信息记录到文件系统。到目前为止,我已经能够通过使用滚动文件附加程序并让 log4net “监视”配置文件来实现这一点。
我注意到的是,Log4Net 将在服务启动后立即创建空日志文件,即使所有日志记录都已关闭并且我不打算记录。
除了这篇文章,我找不到关于这个主题的更多信息:
我担心有人可以使用非常低级别的权限设置服务,甚至无权在文件系统上创建日志文件。即使我不打算记录,我也不希望每次遇到记录语句时都会引发异常而导致性能损失。
我已经用检查包装了每个日志记录语句,以查看在尝试记录之前是否启用了日志记录级别,但我仍然不确定是否在 log4net 的内部工作中,如果配置了文件,是否仍会抛出异常在 appender 中没有创建。
if (logger.IsDebugEnabled)
{
logger.DebugFormat(format, traceMessage);
}
有谁知道如果 log4net 最初无法创建日志文件会做什么?
这是有关我的配置的一些信息。打开后日志记录工作正常,我只是担心权限问题。
我的日志记录类上的属性以监视配置更改:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Logging.config", Watch = true)]
附加器:
<appender name="Test" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value=".\\AppLogs\\_test.%appdomain.log" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ALL" />
<levelMax value="FATAL" />
<acceptOnMatch value="false"/>
</filter>
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="Test" />
</filter>
<appendToFile value="true" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="6MB" />
<rollingStyle value="Size" />
<staticLogFileName value="true" />
<filter type="log4net.Filter.DenyAllFilter" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>