我如何设置log4net每天将我的文件记录到不同的文件夹?

hal*_*lex 20 c# configuration logging log4net

  1. 我想在每天将所有日志保存在名为YYYYMMdd的文件夹中 - log4net应根据系统日期时间处理创建新文件夹 - 我如何设置它?
  2. 我希望将白天的所有日志保存到1MB的n个文件中 - 我不想重写旧文件,而是要在一天内真正拥有所有日志 - 我如何设置它?

我在C#中使用

关心亚历克斯

小智 19

试试这个(应该没问题!):

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="logs\\" />
  <appendToFile value="true" />
  <DatePattern value="yyyy\\\\MM\\\\dd'.inf.log'" />
  <rollingStyle value="Date" />
  <param name="StaticLogFileName" value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <header value="[Header]&#13;&#10;" />
    <footer value="[Footer]&#13;&#10;" />
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] &lt;%property{auth}&gt; - %message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

它将创建一个名为'logs\2010\04\02.inf.log'的日志文件 (日期为2010-04-02)


hal*_*lex 11

谢谢你们.我们创建了SortByFolderFileAppender,它继承自RollingFileAppender

最终结果示例:somewhere\Logs\20100305\Client-104615.0

namespace CustomLogging
{
  public class SortByFolderFileAppender : log4net.Appender.RollingFileAppender
  {
    protected override void OpenFile(string fileName, bool append)
    {
      //Inject folder [yyyyMMdd] before the file name
      string baseDirectory = Path.GetDirectoryName(fileName);
      string fileNameOnly = Path.GetFileName(fileName);
      string newDirectory = Path.Combine(baseDirectory, DateTime.Now.ToString("yyyyMMdd"));
      string newFileName = Path.Combine(newDirectory, fileNameOnly);

      base.OpenFile(newFileName, append);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
<appender name="SortByFolderFileAppender" type="CustomLogging.SortByFolderFileAppender">
  <file type="log4net.Util.PatternString" value="Logs\Client"/>
  <appendToFile value="true"/>
  <rollingStyle value="Composite"/>
  <datePattern value="-HHmmss"/>
  <maxSizeRollBackups value="40"/>
  <maximumFileSize value="1MB"/>
  <countDirection value="1"/>
  <encoding value="utf-8"/>
  <staticLogFileName value="false"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date{HH:mm:ss.fff}|%-5level|%message%newline"/>
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)


Ker*_*ido 1

我相信,您可以根据FileAppender类创建自己的附加程序。您可能需要重写该OpenFile方法以在正确的位置创建文件。