By the way, you've got some configuration there. SiftingAppender plus
RollingFileAppender in prudent mode, that has me impressed.
[email protected] wrote:
Hi Ceki,
thanks for your answer in detail and sorry for missing the section in the
documentation. I see your points and will look for alternatives.
Regards,
tom
-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of Ceki Gulcu
Sent: Tuesday, August 11, 2009 12:32 PM
To: logback users list
Subject: Re: [logback-user] RollingFileAppender with Prudent Flag
Setting the File property to a non-null value implies that during rollover that
file would need to be renamed and moved. However, when multiple processes have
a file descriptor open (which is the intention in prudent mode), most operating
systems won't allow moving of the file, hence the File=null restriction.
Ceki Gulcu wrote:
Hello Thomas,
The File property of RollingFileAppender cannot be set in prudent
mode. This is documented in [1] (see the table describing the
properties of RollingFileAppender). Moreover, the application of this
restriction should have been reported via logback's status messages.
The restriction is justified by technical reasons which somehow I can
no longer recall. Let me reconsider the issue and come back to you.
[1] http://logback.qos.ch/manual/appenders.html#RollingFileAppender
[email protected] wrote:
Hi,
we're using logback and the RollingFileAppender to write log files
from several webservice to a /logs directory and automatically move
"old" files into a /logs/archive directory based on a
TimeBasedRollingPolicy. This works great with the following
configuration:
<appender name="SERVICE_CALL_SIFT"
class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator
class="com.myproject.logback.ContextEnvironmentPartBasedDiscriminator">
<DefaultValue>unknown</DefaultValue>
</discriminator>
<sift>
<appender name="FILE-AUDIT-${environmentName}"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/service_call_${environmentName}.log</File>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- Rollover at midnight. Put log as
uncompressed file to archive. -->
<FileNamePattern>${LOG_DIR}/archive/service_call_${environmentName}_%
d{yyyy-MM-dd}.log</FileNamePattern>
<!-- Keep 5 days worth of history -->
<MaxHistory>${MAX_HISTORY_DAYS}</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%contextName] refId:
%mdc{refId}, %msg%n</Pattern>
</layout>
</appender>
</sift>
</appender>
But since some of the log files are shared between different
applications, I discovered some strange effects (one of the
applications stopped writing into one of the log-files) and read
about the prudent flag. Now, I tried to switch on the prudent mode
using the following configuration:
<appender name="SERVICE_CALL_SIFT"
class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator
class="com.myproject.logback.ContextEnvironmentPartBasedDiscriminator">
<DefaultValue>unknown</DefaultValue>
</discriminator>
<sift>
<appender name="FILE-AUDIT-${environmentName}"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/service_call_${environmentName}.log</File>
<!-- Ensure safe writing to one log file from
different contexts by setting prudent to true -->
<Prudent>true</Prudent> <rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- Rollover at midnight. Put log as
uncompressed file to archive. -->
<FileNamePattern>${LOG_DIR}/archive/service_call_${environmentName}_%
d{yyyy-MM-dd}.log</FileNamePattern>
<!-- Keep 5 days worth of history -->
<MaxHistory>${MAX_HISTORY_DAYS}</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%contextName] refId:
%mdc{refId}, %msg%n</Pattern>
</layout>
</appender>
</sift>
</appender>
This way, the node /appender/sift/appender/File isn't used anymore
and the logger directly writes into the archive file specified under
/appender/sift/appender/rollingPolicy/FileNamePattern.
Is there a way of using the prudent mode but still separating the log
from the archive files?
Thanks for your help!
tom
--
Ceki Gülcü
Logback: The reliable, generic, fast and flexible logging framework for Java.
http://logback.qos.ch
_______________________________________________
Logback-user mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-user
_______________________________________________
Logback-user mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-user
--
Ceki Gülcü
Logback: The reliable, generic, fast and flexible logging framework for Java.
http://logback.qos.ch
_______________________________________________
Logback-user mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-user