Summary
Freshly-installed (via apt-get
) Tomcat on a freshly-installed Ubuntu 8.04 LTS 64-bit works, but doesn't (seem to) log anything. See also "What I've Tried" and "Closing In On It" below.
More Detail
Because the package maintainers have done a HUGE amount of the work, getting basic things working has been a fairly straightfoward matter of running apt-get
and pointing Tomcat at the right JDK. And it works. But it doesn't appear to log anything.
As far as I can tell, the logging infrastructure is controlled via logging.properties
files (since this is Tomcat 5.5, not Tomcat 5.0), including a central one (which you can override per web app) at /etc/tomcat55/logging.properties
(/etc/tomcat55
is symlinked as /var/lib/tomcat55/conf
). I'm not overriding it, and I can't see why I'm not seeing something. Here's the file:
# 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.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
4admin.org.apache.juli.FileHandler.level = FINE
4admin.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4admin.org.apache.juli.FileHandler.prefix = admin.
5host-manager.org.apache.juli.FileHandler.level = FINE
5host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
5host-manager.org.apache.juli.FileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
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 = DEBUG
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].handlers = 4admin.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 5host-manager.org.apache.juli.FileHandler
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
#org.apache.catalina.startup.ContextConfig.level = DEBUG
#org.apache.catalina.startup.HostConfig.level = DEBUG
#org.apache.catalina.session.ManagerBase.level = DEBUG
The only change I've made is:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = DEBUG
...which was set to INFO
like all the others, but I wanted to get it to log something, so I upped it to DEBUG
. Naturally I've restarted Tomcat.
I can compile and view a JSP, so again Tomcat is working, but /var/lib/tomcat5.5/logs
is stubbornly empty. Even if I force an error by having an invalid JSP or some such, I'm getting nothing.
What I've Tried
- I've been through the steps listed in the Tomcat FAQ for ensuring that the distro hasn't messed things up (they hadn't).
- I've gone looking for a
logs
directory elsewhere in case it's not/var/lib/tomcat5.5/logs
(although that was created by the install). - Naturally I've restarted Tomcat after making any changes.
One thing I haven't done is to chown
everything to be owned by the tomcat55
user that the install created. logs
is owned by tomcat55
, but a number of the other directories and files are owned by root
, though they're world-readable. I haven't done this because (hangs head) I can't quite figure out how to fully back-up the existing tree so I can readily undo the change. The blasted tree has absolute symlinks interweaving /etc/tomcat55
, /var/lib/tomcat55
, and /usr/share/tomcat55
that I know of. I could tar up each of those, but I don't know for certain I'm not missing something.
EDIT:
Closing In On It
Okay, so I've found that it's writing console-style stuff to /var/log/daemon.log
. Whew! At least that gives me a place to start. And it's issuing complaints like:
jsvc.exec[18819]: Can't load log handler "2localhost.org.apache.juli.FileHandler"
jsvc.exec[18819]: java.lang.ClassNotFoundException: 2localhost.org.apache.juli.FileHandler
And I'm not surprised, 2localhost.org.apache.juli.FileHandler
isn't a valid class name (packages can't start with digits!). So I'm suspecting that the default logging.properties
file is...not good. Will report back.