[logback-user] OverlappingFileLockException when using common log among 2 tomcat contexts in same JVM.

Christopher Holt chris.holt at hcs.us.com
Thu Sep 19 16:57:07 CEST 2013


David,

If I move all of the logback, log4j, etc jars to tomcat/lib, then it fails
to find the logback.xml in my conf/Catalina/localhost directory.

Jars involved:

jcl-over-slf4j-1.7.5.jar
jul-to-slf4j-1.7.5.jar
log4j-over-slf4j-1.7.5.jar
logback-access-1.0.13.jar
logback-classic-1.0.13.jar
logback-core-1.0.13.jar
slf4j-api-1.7.5.jar

I really want to keep the logback.xml config out of the war files.
 Different deployments will have different logging strategies.  I also need
separate logback.xml's per tomcat instance.  Where can I keep my config so
that it can be seen when the logback jars are not in the wars?

Thanks,
-Chris



On Thu, Sep 19, 2013 at 3:53 AM, David Roussel
<nabble at diroussel.xsmail.com>wrote:

> Where is logback on the class path? If it is in the wars, try taking it
> out and putting it in the tomcat class path.
>
> David
>
> On 18 Sep 2013, at 16:30, Christopher Holt <chris.holt at hcs.us.com> wrote:
>
> Hello,
>
> I have logback configured so that code bundled in 2 different war files
> under tomcat will write to the same log file which rolls daily.  It's also
> marked as prudent.  I believe my configuration follows the guidelines from (
> http://logback.qos.ch/manual/appenders.html#prudentWithRolling).
>
> <configuration>
>   <appender name="A1"
> class="ch.qos.logback.core.rolling.RollingFileAppender">
>     <prudent>true</prudent>
>     <encoder>
>             <pattern>%d{dd-MM HH:mm:ss} [%t] %c %5p %m%n</pattern>
>     </encoder>
>     <rollingPolicy
> class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
>
> <FileNamePattern>${catalina.base}/logs/myapp.%d{yyyy-MM-dd}.log</FileNamePattern>
>         <MaxHistory>30</MaxHistory>
>     </rollingPolicy>
>   </appender>
>
>   <root level="INFO">
>     <appender-ref ref="A1"/>
>   </root>
> </configuration>
>
> My problem is that I get lots
> of java.nio.channels.OverlappingFileLockException.
> ...
> java.nio.channels.FileChannel.lock(FileChannel.java:860)
> ch.qos.logback.core.FileAppender.safeWrite(FileAppender.java:187)
> ch.qos.logback.core.FileAppender.writeOut(FileAppender.java:204)
>
> ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:212)
> ...
>
> After reading the docs for OverlappingFileLockException, my hunch is that
> the 2 different loggers, loaded by different class loaders within the same
> JVM are both trying to lock the file, unbeknownst to each other.  This
> violates the rules for FileChannel.lock, which seem to ignore the issue of
> locks among multiple class loaders within 1 JVM.
>
> Has anyone run into this issue before?  Is there a simple workaround that
> I'm not thinking of?
>
> Thanks,
> Chris
>
>  _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
>
>
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/logback-user/attachments/20130919/f061283b/attachment.html>


More information about the Logback-user mailing list