[
https://issues.apache.org/jira/browse/LOG4NET-552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16134111#comment-16134111
]
Dominik Psenner edited comment on LOG4NET-552 at 8/19/17 1:21 PM:
------------------------------------------------------------------
I gave this a few thoughts and am quite sure that your solution could be
considered to be a new locking model. The name of it could be
"InterProcessMinimalLock" and lock the logfile like "MinimalLock" does but
consider the logfile to be written by multiple process at the same time.
Therefore it will use a mutex to lock several other operations like OpenFile,
CloseFile, ..
I like this approach as this would not affect any existing configuration, not
change the api and last but not least, for now you could plug your
implementation into log4net without requiring a new version of the log4net
assembly. The patch would further be a lot easier to check. Remember to pack it
with tests and reuse the coding conventions (like indentations to be tabs and
not spaces).
What do you think?
was (Author: nachbarslumpi):
I gave this a few thoughts and am quite sure that your solution could be
considered to be a new locking model. The name of it could be
"InterProcessMinimalLock" and lock the logfile only minimal but consider the
file to be written by multiple process at the same time. This would not affect
any existing configuration, not change the api and last but not least, you can
plug it into log4net without requiring a new version of the log4net assembly.
What do you think?
> Incorrect behavior of RollingFileAppender while rolling files, if multiple
> processes appending into same file
> -------------------------------------------------------------------------------------------------------------
>
> Key: LOG4NET-552
> URL: https://issues.apache.org/jira/browse/LOG4NET-552
> Project: Log4net
> Issue Type: Bug
> Components: Appenders
> Affects Versions: 1.2.15
> Environment: Windows Server 2008 R2 Enterprise
> Reporter: Sachin Abaso Patil
> Priority: Blocker
> Attachments: Modification in AdjustFileBeforeAppend.png
>
>
> Hi Team,
> This issue has become blocker for us, as on our production environment,
> multiple processes are appending log into single log file which has no issue,
> but while rolling it overwrites files and thus missing log entries.
> Based on link below, it looks like log file rolling mechanism of log4net is
> not process safe even after using FileAppender.InterProcessLock.
> Link: https://issues.apache.org/jira/browse/LOG4NET-485
> Also, in FAQ (https://logging.apache.org/log4net/release/faq.html) under
> section “How do I get multiple process to log to the same file?”, it has been
> clearly mentioned that, rolling files is simply not compatible with multiple
> process scenario.
> My questions,
> 1. We are using version “1.2.15”. Are you planning to fix above mentioned
> rolling issue in upcoming release? If yes then please provide tentative
> release date.
> 2. We had incorporated log4net in our project in year 2009, had FAQ
> mentioned this limitation (rolling file not compatible with multi process) in
> year 2009? Because we while studying log4net during year 2009 we do not
> remember seeing this note in FAQ?
> Requesting you to please respond as soon as possible with your comments.
> Below is how we have configured appender for all processes,
> <appender name="RollingFileAppender"
> type="log4net.Appender.RollingFileAppender">
> <threshold value ="ERROR"/>
> <file value="${SystemDrive}\LogFiles\Example.log" />
> <param name="LockingModel"
> type="log4net.Appender.FileAppender+MinimalLock" />
> <appendToFile value="true" />
> <maximumFileSize value="100MB" />
> <staticLogFileName value="true"/>
> <maxSizeRollBackups value="-1" />
> <countDirection value="1" />
> <datePattern value=".yyyyMMddHH'.log'"/>
> <rollingStyle value="Composite" />
> <ignoreExceptionItemAgeLimit value="false" />
> <exceptionItemAgeLimit value="00:00:59" />
> <layout type="log4net.Layout.PatternLayout">
> <param name="conversionPattern" value ="%utcdate{yyyy-MM-dd
> HH:mm:ss.fff}|%-5level|%property{EventID}|%property{log4net:HostName}|%appdomain|%property{ProcessID}|%thread|%message%newline"/>
> </layout>
> </appender>
> Thanks,
> Sachin Patil
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)