Назад | Перейти на главную страницу

Отсутствующие журналы - Tomcat 5.5 + Ubuntu 8.04

Резюме

Свежеустановленный (через apt-get) Tomcat на недавно установленной 64-разрядной версии Ubuntu 8.04 LTS работает, но (кажется) ничего не регистрирует. Смотрите также "Что я пробовал" и "Закрытие на нем"ниже.

Более детально

Поскольку сопровождающие пакетов проделали ОГРОМНЫЙ объем работы, заставить работать базовые вещи было довольно просто. apt-get и указывая Tomcat на правый JDK. И это работает. Но, похоже, ничего не регистрирует.

Насколько я могу судить, инфраструктура логирования управляется через logging.properties файлы (поскольку это Tomcat 5.5, а не Tomcat 5.0), включая центральный (который можно переопределить для каждого веб-приложения) в /etc/tomcat55/logging.properties (/etc/tomcat55 символически связан как /var/lib/tomcat55/conf). Я не отменяю это, и я не понимаю, почему я не вижу что-то. Вот файл:

# 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

Единственное изменение, которое я сделал:

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

... который был установлен на INFO как и все остальные, но я хотел, чтобы это в лог что-то, поэтому я увеличил его до DEBUG. Естественно, я перезапустил Tomcat.

Я могу компилировать и просматривать JSP, так что Tomcat снова работает, но /var/lib/tomcat5.5/logs упорно не пусто. Даже если я вызываю ошибку, имея недопустимый JSP или что-то подобное, я ничего не получаю.

Что я пробовал

Одно я нет сделано для chown все должно принадлежать tomcat55 пользователь, созданный при установке. logs принадлежит tomcat55, но ряд других каталогов и файлов принадлежит root, хотя они доступны для чтения во всем мире. Я не сделал этого, потому что (вешает голову) Я не могу понять, как полностью создать резервную копию существующего дерева, чтобы легко отменить изменение. У взорванного дерева абсолютные символические ссылки переплетаются /etc/tomcat55, /var/lib/tomcat55, и /usr/share/tomcat55 что я знаю о. Я мог бы разобраться в каждом из них, но я не уверен, что что-то упустил.

РЕДАКТИРОВАТЬ:

Закрытие на нем

Итак, я обнаружил, что он пишет консольные вещи на /var/log/daemon.log. Ух! По крайней мере, это дает мне возможность начать. И он выдает жалобы вроде:

jsvc.exec[18819]: Can't load log handler "2localhost.org.apache.juli.FileHandler"
jsvc.exec[18819]: java.lang.ClassNotFoundException: 2localhost.org.apache.juli.FileHandler

И я не удивлен, 2localhost.org.apache.juli.FileHandler недопустимое имя класса (пакеты не могут начинаться с цифр!). Поэтому я подозреваю, что по умолчанию logging.properties файл ... не хороший. Отчитаюсь.

Разобрался - посылка не вполне работать с последним пакетом Sun Java6, sun-java6-jdk; исправление довольно простое, когда вы его найдете:

Как только я нашел daemon.log, Я обнаружил ошибки, перечисленные в моем редактировании вопроса, но это всего лишь побочный эффект этой ошибки:

jsvc.exec[18819]: Could not load Logmanager "org.apache.juli.ClassLoaderLogManager"
jsvc.exec[18819]: java.security.AccessControlException: access denied (java.lang.RuntimePermission setContextClassLoader)

... что происходит потому, что пакет по умолчанию запускает Tomcat с помощью диспетчера безопасности Java согласно этому параметру в /etc/init.d/tomcat5.5:

# Use the Java security manager? (yes/no)
TOMCAT5_SECURITY=yes

... но пакет не установить разрешения на JULI (реализация ведения журнала по умолчанию), которые, по-видимому, необходимы последней версии Java6 от Sun для работы. Более ранние версии Java6 явно были в порядке. Эта недавняя ветка в списке рассылки Tomcat-user указал мне в правильном направлении; рассматриваемый пользователь получил указанную выше ошибку, и в конце концов Марк Томас выяснил, что это разрешение:

permission java.lang.RuntimePermission "setContextClassLoader";

... отсутствовал из catalina.policy. И действительно, если я добавлю это разрешение в раздел JULI /etc/tomcat5.5/policy.d/03catalina.policy и перезапустите Tmocat, ошибка исчезнет, ​​и я получу файлы журнала! Huzzah!

Будьте осторожны: если вы также установите tomcat5.5-webapps чтобы получить примеры, приложение-менеджер и т. д., вам нужно включить другие настройки 03catalina.policy. Конечно, у вас всегда есть возможность отключить диспетчер безопасности, но это то, что он для.

Все официальные сообщения об этой проблеме находятся здесь: https://bugs.launchpad.net/ubuntu/+source/tomcat5.5/+bug/410379