0

Is it possible to create a log path everyday which writes the logs in the following folder format.

D:\Logs\yyyyMMdd\App1\App.txt

Will Log4Net create the path if it does not exist. ?

I tried the following, but it does't seem to work.

 <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="D:\Logs\" />
      <appendToFile value="true" />
      <datePattern value="yyyyMMdd'\App1\App.txt'" />
      <rollingStyle value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception" />
      </layout>
    </appender>

Thanks in advance.

Muthukumar
  • 8,679
  • 17
  • 61
  • 86

2 Answers2

2

You can introduce your own appender:

    namespace CustomLogging
    {
    public class CustomAppender : log4net.Appender.RollingFileAppender
      {
        protected override void OpenFile(string fileName, bool append)
        {
          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);
        }
      }
}

and then

<appender name="CustomAppender" type="CustomLogging.CustomAppender">
  <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>
Kajetan
  • 56
  • 3
0

Try this solution but only XAML

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <file value="logs\" />
      <datePattern value="dd.MM.yyyy'.log'" />
      <staticLogFileName value="false" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
siranen
  • 374
  • 1
  • 11