You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by "Alex Qi (yuqi)" <yu...@cisco.com> on 2008/01/24 20:13:40 UTC
Weird behavior for RollingFileAppender
I defined a RollingFileAppender in my log4j config file, it works fine
for simple logging request. But when many loggers writing to the same
log file, it behaves like this:
original log file is: "foo.log", it should roll to "foo.log.1",
"foo.log.2"
now, "foo.log" did roll to "foo.log.1", but the new message also write
to "foo.log.1" instead of the newly generated "foo.log"
Is this a known bug? Thanks.
Regards,
-- Alex Qi
Re: Weird behavior for RollingFileAppender
Posted by Curt Arnold <ca...@apache.org>.
On Jan 24, 2008, at 1:13 PM, Alex Qi (yuqi) wrote:
> I defined a RollingFileAppender in my log4j config file, it works fine
> for simple logging request. But when many loggers writing to the same
> log file, it behaves like this:
>
> original log file is: "foo.log", it should roll to "foo.log.1",
> "foo.log.2"
>
> now, "foo.log" did roll to "foo.log.1", but the new message also write
> to "foo.log.1" instead of the newly generated "foo.log"
>
> Is this a known bug? Thanks.
>
>
> Regards,
>
> -- Alex Qi
>
That is a very common behavior when you have more than one appender
attempting to use the same file name pattern. It should not occur if
you only have one appender. If the same configuration file is loaded
by multiple independent instances of log4j (for example, in different
JVM's or class loaders), there will be multiple independent
implementations of the appender and there is no attempt (or any good
mechanism to attempt) to coordinate their behavior.
Writing to "foo.log.1" would occur when one instances of the appender
has rolled over and renamed the old "foo.log" to "foo.log.1". That
appender would have closed its output stream on the old file and
opened a new one on the new file. A different appender would not be
aware of that rollover and would continue to write to the same output
stream that it always, but the name of the file resource that that
stream is associated with has changed underneath it. On a Windows
box, the rename on the rollover would have likely failed, but Unix
like OS's allow open files to be renamed.
If you configuration file has multiple instances of RFA with the same
pattern, you either need to reduce those to one instance or change the
patterns on the instances. If you are running under an application
server (Tomcat, JBOSS, etc), the location of the log4j.jar can
determine if a common instance is used for all applications or if
multiple instances are used.
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org