Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RollingFileAppender overwrites an old log even if AppendToFile is true when RollingStyle is Composite and there are some logs on that day. #163

Open
WorldRobertProject opened this issue Aug 2, 2024 · 2 comments
Assignees

Comments

@WorldRobertProject
Copy link

When RollingStyle is Composite, it seems RollingFileAppender ignores AppendToFile flag except for the first log on that day.

The following code makes log files as 2024-08-02.0.log, 2024-08-02.1.log, ...

log4net.config.xml

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=".\Log\" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Composite" />
      <param name="DatePattern" value='yyyy-MM-dd".log"' />
      <param name="MaximumFileSize" value="5MB" />
      <param name="MaxSizeRollBackups" value="10" />
      <param name="StaticLogFileName" value="false" />
      <param name="CountDirection" value="1" />
      <param name="PreserveLogFileNameExtension" value="true"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss.fff} [%-5p] %m (%M)%n"/>
      </layout>
    </appender>

    <logger name="log">
      <level value="debug" />
      <appender-ref ref="LogFileAppender" />
    </logger>
  </log4net>
</configuration>

Program.cs

using log4net;
using log4net.Config;
using System.Reflection;

var pathConfig = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config.xml");
XmlConfigurator.Configure(new FileInfo(pathConfig));

var assembly = Assembly.GetEntryAssembly();
var logger = LogManager.GetLogger(assembly, "log");

logger.Info("Hello, log4net!");

When only 2024-08-02.0.log exists, it appends a new log to 2024-08-02.0.log as expected.
When both 2024-08-02.0.log and 2024-08-02.1.log exist and 2024-08-02.0.log is greater than 5MB, this code overwrites 2024-08-02.1.log and outputs the following error message:

log4net:ERROR RollingFileAppender: INTERNAL ERROR. Append is False but OutputFile [...\Log\2024-08-02.1.log] already exists.

It seems AppendToFile flag is ignored.

All log4net versions from 2.0.10 to 2.0.17 reproduce this issue.

@WorldRobertProject
Copy link
Author

I confirmed that 3.0.0-preview.2 also reproduces this issue.

@FreeAndNil
Copy link
Contributor

Hi @WorldRobertProject,

thanks for reporting.
I can reproduce your problem, but I haven't found the time to fix it yet.

@FreeAndNil FreeAndNil self-assigned this Sep 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants