在应用程序中部分工作的日志记录
Logging partially working in the application
在我的 WPF 应用程序中,我使用 log4net 进行日志记录。这个应用程序实现了几个页面。我的问题是日志记录从第一页开始。用户导航到的任何其他页面都不会进入日志文件。我也没有遇到任何异常。
这是我的 app.config
中的设置方式:
<log4net>
<!-- Define some output appenders -->
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="..\Logs\%property{LogName}.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="MyWPFApplicationLog" />
<acceptOnMatch value="false" />
</filter>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="MyWPFApplicationAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="../Logs/MyWPFApplication.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="1" />
<maximumFileSize value="100MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<logger name="MyWPFApplicationLog">
<level value="INFO"/>
<appender-ref ref="MyWPFApplicationAppender" />
</logger>
</log4net>
然后我在 AssemblyInfo.cs
中有以下内容:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
在我要进行日志记录的所有 class 中,我声明了以下内容。
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger("MyWPFApplicationLog");
之后我就在 class 的各个地方使用了 logger.Info , logger.Error 方法。从第一页开始,所有内容都进入 MyWPFApplication.txt
文件,但任何后续页面都没有。奇怪的是,在 Logs 文件夹中,我确实看到创建了另一个文件 (null).txt,但它是空的。你在这里看到我可能做错了什么吗?
合乎逻辑的解释是您在另一个 类 中使用了不同的记录器名称。检查名称是否为 idd MyWPFApplicationLog。如果是这样,您最好的选择是启用 log4net 调试以查看您的记录器是否 working/crashed。在你的 web.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
在我的 WPF 应用程序中,我使用 log4net 进行日志记录。这个应用程序实现了几个页面。我的问题是日志记录从第一页开始。用户导航到的任何其他页面都不会进入日志文件。我也没有遇到任何异常。
这是我的 app.config
中的设置方式:
<log4net>
<!-- Define some output appenders -->
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="..\Logs\%property{LogName}.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="MyWPFApplicationLog" />
<acceptOnMatch value="false" />
</filter>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="MyWPFApplicationAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="../Logs/MyWPFApplication.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="1" />
<maximumFileSize value="100MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<logger name="MyWPFApplicationLog">
<level value="INFO"/>
<appender-ref ref="MyWPFApplicationAppender" />
</logger>
</log4net>
然后我在 AssemblyInfo.cs
中有以下内容:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
在我要进行日志记录的所有 class 中,我声明了以下内容。
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger("MyWPFApplicationLog");
之后我就在 class 的各个地方使用了 logger.Info , logger.Error 方法。从第一页开始,所有内容都进入 MyWPFApplication.txt
文件,但任何后续页面都没有。奇怪的是,在 Logs 文件夹中,我确实看到创建了另一个文件 (null).txt,但它是空的。你在这里看到我可能做错了什么吗?
合乎逻辑的解释是您在另一个 类 中使用了不同的记录器名称。检查名称是否为 idd MyWPFApplicationLog。如果是这样,您最好的选择是启用 log4net 调试以查看您的记录器是否 working/crashed。在你的 web.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
</configuration>