Can Log4net have multiple appenders write to the same file?

前端 未结 2 1809
伪装坚强ぢ
伪装坚强ぢ 2020-12-09 09:16

I\'m using a RollingFileAppender to log some info to a file with a conversionPattern (in the web.config) that looks like this for the header of each log section:

<         


        
相关标签:
2条回答
  • 2020-12-09 09:54

    Yes you can have two log4net appenders that append (write) to the same log file.

    You need to place the following line in each of your Appenders:

    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    

    This will make log4net use a minimal locking model that allows multiple processes to write to the same file.

    Here's an example XML that uses two appenders writing to the same log file:

    <log4net debug="false">
    <appender name="RollingLogFileAppender1" type="log4net.Appender.RollingFileAppender">
      <!-- this configures a log for the application messages -->
      <file value="TestLog.log" />
      <appendToFile value="true" />
      <!-- next line uses a minimal locking model that allows multiple processes to write to the same file -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <!-- make the most recent log the highest numbered log -->
      <countDirection value="1" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] %message%newline [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline" />
      </layout>
      <!-- The following two filters insure only log requests of 
            version '1' use this Appender -->
    </appender>
    <appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender">
      <file value="TestLog.log" />
      <appendToFile value="true" />
      <!-- next line uses a minimal locking model that allows multiple processes to write to the same file -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <!-- make the most recent log the highest numbered log -->
      <countDirection value="1" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline%message" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender1" />
      <appender-ref ref="RollingLogFileAppender2" />
    </root>
    

    This can be found in the Apache documentation here: Apache Log4Net Docs Just search on this page for 'same file'.

    Hope this helps.

    0 讨论(0)
  • 2020-12-09 09:55

    You could realize if there is any problem with log4net checking the output window on visual studio. The library log errors there, very useful to detect configuration mistakes.

    0 讨论(0)
提交回复
热议问题