2015-06-26

Hi -

I wanted to share our experience in setting up proper log rotation. As it is out of the box, Pentaho doesn't seem to do much log rotation - Catalina.out grows endlessly, and many other logs while they rotate they don't stop adding new ones.

To fix this, we made the following changes:

1) Create a file called tomcat, which you will place in /etc/logrotate.d/ on linux.

Code:

# logrotate config file to rotate out the catalina.out for Tomcat file,

# which will grow too large otherwise. This rotates daily, compressing

# the result, and keeping 7 days worth of logs.

/var/www/biserver-ce/tomcat/logs/catalina.out {

daily

copytruncate

missingok

rotate 7

dateext

compress

delaycompress

notifempty

}

2) Change tomcat/conf/logging.properties to the following, which uses java.util.logging.FileHandler, keeps last 5 files, and keeps up to 20mb in each file. Also changing level to warning drastically reduces the size of these logs.

Code:

# Licensed to the Apache Software Foundation (ASF) under one or more

# contributor license agreements.  See the NOTICE file distributed with

# this work for additional information regarding copyright ownership.

# The ASF licenses this file to You under the Apache License, Version 2.0

# (the "License"); you may not use this file except in compliance with

# the License.  You may obtain a copy of the License at

#

#    http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

handlers = 1catalina.java.util.logging.FileHandler, 2localhost.java.util.logging.FileHandler, 3manager.java.util.logging.FileHandler, 4host-manager.java.util.logging.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.java.util.logging.FileHandler, java.util.logging.ConsoleHandler

############################################################

# Handler specific properties.

# Describes specific configuration info for Handlers.

############################################################

# Store ~20MB of logs at a time, keep last 5 around

1catalina.java.util.logging.FileHandler.level = WARNING

1catalina.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.log

1catalina.java.util.logging.FileHandler.limit = 20971520

1catalina.java.util.logging.FileHandler.count = 5

1catalina.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

2localhost.java.util.logging.FileHandler.level = WARNING

2localhost.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/localhost.%g.log

2localhost.java.util.logging.FileHandler.limit = 20971520

2localhost.java.util.logging.FileHandler.count = 5

2localhost.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

3manager.java.util.logging.FileHandler.level = WARNING

3manager.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/manager.%g.log

3manager.java.util.logging.FileHandler.limit = 20971520

3manager.java.util.logging.FileHandler.count = 5

3manager.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

4host-manager.java.util.logging.FileHandler.level = WARNING

4host-manager.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/host-manager.%g.log

4host-manager.java.util.logging.FileHandler.limit = 20971520

4host-manager.java.util.logging.FileHandler.count = 5

4host-manager.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

java.util.logging.ConsoleHandler.level = WARNING

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

############################################################

# Facility specific properties.

# Provides extra control for each logger.

############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = WARNING

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.java.util.logging.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = WARNING

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.java.util.logging.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = WARNING

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.java.util.logging.FileHandler

3) Change the pentaho.log settings in log4j.xml, found in tomcat/webapps/pentaho/WEB-INF/classes, as follows, which keeps 5 files around of 20mb in size. I think you need to download the apache log4j extras file to make this work and drop in the jar directory.

Code:

<appender name="PENTAHOFILE" class="org.apache.log4j.rolling.RollingFileAppender">

<param name="File" value="../logs/pentaho.log" />

<param name="Append" value="true" />

<rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">

<param name="FileNamePattern" value="../logs/pentaho.%i.log" />

<param name="ActiveFileName" value="../logs/pentaho.log" />

<param name="MaxIndex" value="5" />

</rollingPolicy>

<triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">

<param name="MaxFileSize" value="20971520" />

</triggeringPolicy>

<layout class="org.apache.log4j.PatternLayout">

<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

</layout>

</appender>

Hope this helps someone, and I welcome any suggestions for improvement to the above. You can also disable audit logging if you don't need it.

Show more