Greetings,

Hope someone has heard of the problem below or can suggest workarounds or
how to debug this thing.

Problem:
=======
- After rolling, the old (rotated) log file continues to pick up entries
and grows.
  The new log file picks up WARN and INFO level logs. The old/rolled file
picks
  up ERROR level logs.
- After max rotations, the filename no longer visible to "ls". But the Java
process
  still has 2 file descriptors pointing at the deleted file. The file will
keep
  growing until it eats up all disk space.
- Only a handful systems have this problem. We have about 20 systems
  in the lab and most of them rotate correctly.
  One system has this bug happening 100% of the time, meaning after
restarting the
  Java process, the rotation problem appears at the first rollover.
  It is our stress test system and generates quit a bit of log entries
(busy but not
  ridiculously busy).
- 3 other systems entered the above state after moderate effort to
  filled the log file to trigger rolling.

Other Symtoms:
=============
Output from the command "ls -l /proc/<pid>/fd | grep catalina.out":
Mar 31 11:21 1 -> /var/log/tomcat/catalina.out.1
Mar 31 11:21 111 -> /var/log/tomcat/catalina.out
Mar 31 11:21 2 -> /var/log/tomcat/catalina.out.1

We have another Java process using identical log4j properties file
(except the log filename part). This process has no rotation problem.
"lsof | grep log4j" output shows this other process has handles
to log4j-1.2.15.jar. But the tomcat process which has rotation
problem does not?! Not sure if this means anything.


History and Environment:
=======================
We have been using log4j since 2012 without any issues. There are about 200
customers using this configuration:

- CentOS 6.4, 6.5 and 6.6 (systems upgrade to latest CentOS releases)
- Java 6 (openjdk)
- tomcat 6.0.32
- log4j 2.15 (base on the filename log4j-1.2.15.jar)
- Dell server with 16G RAM and 12 CPU cores (2 sockets X 6 cores)

This problem appears recently when we upgrade our system to the followings:
- CentOS 6.7
- Java 8 (currently java-1.8.0-openjdk-1.8.0.77-0.b03)
- tomcat 6.0.45 (at one point the stress test system used 6.0.32 and
already
  exhibited the rotation problem)
- log4j 2.15

log4j.properties:
================
log4j.rootLogger=WARN, R

##rolling appender
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/catalina.out
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

## logging levels
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=WARN
log4j.logger.org.apache.catalina.core=WARN
log4j.logger.org.apache.catalina.session=WARN
log4j.logger.com.ourcompany=INFO

tomcat config
==========
Probably relevant but there are multiple conf files and web.xml and I don't
know which involve logging.

Regards,
Simon

Reply via email to