【问题标题】:C# log4net multi purpose file loggingC# log4net 多用途文件日志记录
【发布时间】:2021-05-26 22:22:07
【问题描述】:

我正在构建一个应用程序,我需要在其中记录不同的内容,例如应用程序行为(打开/关闭窗口、异常、警告等...)和数据读/写(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

简短回顾:我需要将不同的内容记录到不同的文件中。

谁能帮我解决这个问题?

【问题讨论】:

    标签: c# wpf logging log4net


    【解决方案1】:

    尝试替换这个

    <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>
    

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      相关资源
      最近更新 更多