C# log4net 多用途文件记录
C# log4net multi purpose file logging
我正在构建一个应用程序,我需要在其中记录不同的事情,例如应用程序行为(windows 的 opening/closing、异常、警告等...)和数据 read/write (以 csv 格式)
我有这个 log4net.config 文件
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="ApplicationLog" />
<appender-ref ref="DigitalWriteLog" />
<appender-ref ref="AnalogWriteLog" />
<appender-ref ref="AnalogReadLog" />
</root>
<appender name="ApplicationLog" type="log4net.Appender.FileAppender">
<file value="Application.log" />
<appendToFile value="true" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<preserveLogFileNameExtension value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<appender name="DigitalWriteLog" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="DigitalWrite/" />
<appendToFile value="true" />
<datePattern value="dd-MM-yyyy'.csv'" />
<staticLogFileName value="false" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<appender name="AnalogWriteLog" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="AnalogWrite/" />
<appendToFile value="true" />
<datePattern value="dd-MM-yyyy'.csv'" />
<staticLogFileName value="false" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<appender name="AnalogReadLog" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="AnalogRead/" />
<appendToFile value="true" />
<datePattern value="dd-MM-yyyy'.csv'" />
<staticLogFileName value="false" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
</log4net>
我使用这段代码来实例化日志
private static readonly ILog applicationLog = LogManager.GetLogger("ApplicationLog");
private static readonly ILog digitalWriteLog = LogManager.GetLogger("DigitalWriteLog");
private static readonly ILog analogWriteLog = LogManager.GetLogger("AnalogWriteLog");
private static readonly ILog analogReadLog = LogManager.GetLogger("AnalogReadLog");
并像这样使用它
applicationLog.Info("Some info");
digitalWriteLog(String.Format("Some digital write csv"));
analogWriteLog(String.Format("Some analog write csv"));
digitalReadLog(String.Format("Some analog read csv"))
但是当我去检查 .csv 文件时,他们有完整的日志而不是单独的消息。
============= Started Logging =============
Opening main window
Entering manual mode
15:49:56,6,250,1.575,000,700,000,700,000,562,500,1.409,335,1.480,509
Starting manual mode
15:50:00,0,0,0,0,0,0,0,0
15:50:00,0,004,0,004,0,004,0,004
15:50:01,6,250,1.575,000,700,000,700,000,562,500,1.414,851,1.485,777
15:50:01,1,0,0,0,0,0,0,0
15:50:02,1,0,1,0,0,0,0,0
15:50:03,1,0,1,0,1,0,0,0
Ending manual mode
15:50:05,0,0,0,0,0,0,0,0
15:50:05,0,004,0,004,0,004,0,004
15:50:06,6,250,1.575,000,700,000,700,000,562,500,1.420,350,1.491,026
Closing main window
============= Ended Logging =============
什么时候应该用于 AnalogReadLog
15:49:56,6,250,1.575,000,700,000,700,000,562,500,1.409,335,1.480,509
15:50:01,6,250,1.575,000,700,000,700,000,562,500,1.414,851,1.485,777
15:50:06,6,250,1.575,000,700,000,700,000,562,500,1.420,350,1.491,026
简短回顾:我需要将不同的内容记录到不同的文件中。
谁能帮我解决这个问题?
尝试替换这个
<root>
<level value="ALL" />
<appender-ref ref="ApplicationLog" />
<appender-ref ref="DigitalWriteLog" />
<appender-ref ref="AnalogWriteLog" />
<appender-ref ref="AnalogReadLog" />
</root>
与:
<root>
<level value="ALL" />
<appender-ref ref="ApplicationLog" />
</root>
<logger additivity="false" name="DigitalWriteLog">
<level value="ALL"/>
<appender-ref ref="DigitalWriteLog" />
</logger>
<logger additivity="false" name="AnalogWriteLog">
<level value="DEBUG"/>
<appender-ref ref="AnalogWriteLog" />
</logger>
<logger additivity="false" name="AnalogReadLog">
<level value="DEBUG"/>
<appender-ref ref="AnalogReadLog" />
</logger>
我正在构建一个应用程序,我需要在其中记录不同的事情,例如应用程序行为(windows 的 opening/closing、异常、警告等...)和数据 read/write (以 csv 格式) 我有这个 log4net.config 文件
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="ApplicationLog" />
<appender-ref ref="DigitalWriteLog" />
<appender-ref ref="AnalogWriteLog" />
<appender-ref ref="AnalogReadLog" />
</root>
<appender name="ApplicationLog" type="log4net.Appender.FileAppender">
<file value="Application.log" />
<appendToFile value="true" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<preserveLogFileNameExtension value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<appender name="DigitalWriteLog" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="DigitalWrite/" />
<appendToFile value="true" />
<datePattern value="dd-MM-yyyy'.csv'" />
<staticLogFileName value="false" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<appender name="AnalogWriteLog" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="AnalogWrite/" />
<appendToFile value="true" />
<datePattern value="dd-MM-yyyy'.csv'" />
<staticLogFileName value="false" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<appender name="AnalogReadLog" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="AnalogRead/" />
<appendToFile value="true" />
<datePattern value="dd-MM-yyyy'.csv'" />
<staticLogFileName value="false" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
</log4net>
我使用这段代码来实例化日志
private static readonly ILog applicationLog = LogManager.GetLogger("ApplicationLog");
private static readonly ILog digitalWriteLog = LogManager.GetLogger("DigitalWriteLog");
private static readonly ILog analogWriteLog = LogManager.GetLogger("AnalogWriteLog");
private static readonly ILog analogReadLog = LogManager.GetLogger("AnalogReadLog");
并像这样使用它
applicationLog.Info("Some info");
digitalWriteLog(String.Format("Some digital write csv"));
analogWriteLog(String.Format("Some analog write csv"));
digitalReadLog(String.Format("Some analog read csv"))
但是当我去检查 .csv 文件时,他们有完整的日志而不是单独的消息。
============= Started Logging =============
Opening main window
Entering manual mode
15:49:56,6,250,1.575,000,700,000,700,000,562,500,1.409,335,1.480,509
Starting manual mode
15:50:00,0,0,0,0,0,0,0,0
15:50:00,0,004,0,004,0,004,0,004
15:50:01,6,250,1.575,000,700,000,700,000,562,500,1.414,851,1.485,777
15:50:01,1,0,0,0,0,0,0,0
15:50:02,1,0,1,0,0,0,0,0
15:50:03,1,0,1,0,1,0,0,0
Ending manual mode
15:50:05,0,0,0,0,0,0,0,0
15:50:05,0,004,0,004,0,004,0,004
15:50:06,6,250,1.575,000,700,000,700,000,562,500,1.420,350,1.491,026
Closing main window
============= Ended Logging =============
什么时候应该用于 AnalogReadLog
15:49:56,6,250,1.575,000,700,000,700,000,562,500,1.409,335,1.480,509
15:50:01,6,250,1.575,000,700,000,700,000,562,500,1.414,851,1.485,777
15:50:06,6,250,1.575,000,700,000,700,000,562,500,1.420,350,1.491,026
简短回顾:我需要将不同的内容记录到不同的文件中。
谁能帮我解决这个问题?
尝试替换这个
<root>
<level value="ALL" />
<appender-ref ref="ApplicationLog" />
<appender-ref ref="DigitalWriteLog" />
<appender-ref ref="AnalogWriteLog" />
<appender-ref ref="AnalogReadLog" />
</root>
与:
<root>
<level value="ALL" />
<appender-ref ref="ApplicationLog" />
</root>
<logger additivity="false" name="DigitalWriteLog">
<level value="ALL"/>
<appender-ref ref="DigitalWriteLog" />
</logger>
<logger additivity="false" name="AnalogWriteLog">
<level value="DEBUG"/>
<appender-ref ref="AnalogWriteLog" />
</logger>
<logger additivity="false" name="AnalogReadLog">
<level value="DEBUG"/>
<appender-ref ref="AnalogReadLog" />
</logger>