[ 
https://issues.apache.org/jira/browse/LOG4NET-378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13667725#comment-13667725
 ] 

Horst Beham commented on LOG4NET-378:
-------------------------------------

A unit test for it (which doesn't quite follow the pattern of the other tests) 
would be:

    #region CompositeLoggerWithPreserveLogFileExtensionTest
    [Test]
    public void CompositeLoggerWithPreserveLogFileExtensionTest()
    {
      string baseName = Path.GetFileNameWithoutExtension(c_fileName);
      string ext = Path.GetExtension(c_fileName);

      // delete old test files
      foreach (var file in Directory.GetFiles(Environment.CurrentDirectory, 
baseName + "*"))
        File.Delete(file);

      var raf = CreateCompositeRollingFileAppender();

      const string oldMessage = "1234567890";
      LoggingEventData led = new LoggingEventData();
      led.Message = oldMessage;
      raf.DoAppend(new LoggingEvent(led));
      raf.DoAppend(new LoggingEvent(led));
      raf.DoAppend(new LoggingEvent(led));
      Assert.IsTrue(File.Exists(baseName + ".20130527.0" + ext));
      Assert.AreEqual(oldMessage + Environment.NewLine, 
File.ReadAllText(baseName + ".20130527.0" + ext));
      Assert.IsTrue(File.Exists(baseName + ".20130527.1" + ext));
      Assert.IsTrue(File.Exists(baseName + ".20130527.2" + ext));
      Assert.IsFalse(File.Exists(baseName + ".20130527.3" + ext));

      // simulate application restart
      raf.Close();
      raf = CreateCompositeRollingFileAppender();

      const string newMessage = "ABCDEFGHIJ";
      led.Message = newMessage;
      raf.DoAppend(new LoggingEvent(led));
      Assert.AreEqual(oldMessage + Environment.NewLine, 
File.ReadAllText(baseName + ".20130527.0" + ext));
      Assert.AreEqual(oldMessage + Environment.NewLine, 
File.ReadAllText(baseName + ".20130527.1" + ext));
      Assert.AreEqual(oldMessage + Environment.NewLine, 
File.ReadAllText(baseName + ".20130527.2" + ext));

      Assert.IsTrue(File.Exists(baseName + ".20130527.3" + ext));
      raf.Close();

      Assert.AreEqual(newMessage + Environment.NewLine, 
File.ReadAllText(baseName + ".20130527.3" + ext));
    }

          private static RollingFileAppender 
CreateCompositeRollingFileAppender()
          {
            RollingFileAppender raf = new RollingFileAppender();
            raf.File = c_fileName;
            raf.AppendToFile = true;
            raf.Encoding = Encoding.UTF8;
            raf.PreserveLogFileNameExtension = true;
            raf.RollingStyle = RollingFileAppender.RollingMode.Composite;
            raf.StaticLogFileName = false;
            raf.DatePattern = ".yyyyMMdd";
            raf.CountDirection = +1;
            raf.MaximumFileSize = "10";
            raf.MaxSizeRollBackups = -1;
            var layout = new PatternLayout();
            raf.Layout = layout;
            layout.ConversionPattern = "%message%newline";
            raf.ActivateOptions();
            raf.DateTimeStrategy = new TestDateTimeStragety();
            return raf;
          }

    class TestDateTimeStragety : RollingFileAppender.IDateTime
    {
      public DateTime Now { get { return new DateTime(2013, 5, 27, 13, 06, 00); 
} }
    }
    #endregion

                
> Rolling log file is overwritten when application is restarted
> -------------------------------------------------------------
>
>                 Key: LOG4NET-378
>                 URL: https://issues.apache.org/jira/browse/LOG4NET-378
>             Project: Log4net
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 1.2.11
>            Reporter: Horst Beham
>            Priority: Minor
>
> My server process uses log files which roll on date and file size (4MB). 
> When I restart the server and there are already more than 1 log files for the 
> current date, the 2nd segment gets overwritten and the 3rd, 4th, ... may get 
> overwritten later, when #2 is filled up again.
> I'm using version 1.2.11, which I can't select in the "Affects Version" combo 
> box.
> e.g. 
> flotto.20130527.0.log = 4MB
> flotto.20130527.1.log = 0MB (just got overwritten when the server was 
> restarted)
> flotto.20130527.2.log = 4MB (still contains original data but will be 
> overwritten too as soon as #1 fills up)
> flotto.20130527.3.log = 4MB (same as above)
> The configuration in MyServer.exe.config looks like this:
> <log4net>
>     <appender name="LogFileAppender" 
> type="log4net.Appender.RollingFileAppender">
>       <file value="flotto.log" />
>       <appendToFile value="true" />
>       <encoding>utf-8</encoding>
>       <preserveLogFileNameExtension value="true"/>
>       <rollingStyle value="Composite" />
>       <staticLogFileName value="false" />
>       <datePattern value=".yyyyMMdd"/>
>       <countDirection value="1"/>
>       <maximumFileSize value="4MB" />
>       <layout type="log4net.Layout.PatternLayout">
>         <conversionPattern value="%date [%-7thread] %-5level %-35logger - 
> %message%newline" />
>       </layout>
>     </appender>
>     <root>
>       <level value="INFO" />
>       <appender-ref ref="LogFileAppender"/>
>     </root>
>     <logger name="Flotto.FlottoService">
>       <!--<level value="DEBUG"/>-->
>     </logger>
>     <logger name="Flotto.TcpServer">
>       <!--<level value="DEBUG"/>-->
>     </logger>
>     <logger name="Flotto.UdpBroadcastReceiver">
>       <!--<level value="DEBUG"/>-->
>     </logger>
>     <logger name="Flotto.GpsTrackerGprsServer">
>       <level value="DEBUG"/>
>     </logger>
>     <logger name="Flotto.SmsAtHttpReceiver">
>       <level value="DEBUG"/>
>     </logger>
>     <logger name="Flotto.SmsAtHttpSender">
>       <level value="DEBUG"/>
>     </logger>
>     <logger name="Flotto.BulksmsComHttpReceiver">
>       <level value="DEBUG"/>
>     </logger>
>     <logger name="Flotto.BulksmsComHttpSender">
>       <level value="DEBUG"/>
>     </logger>
>     <logger name="Flotto.TrackerManager">
>       <!--<level value="INFO"/>-->
>     </logger>
>   </log4net>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to