2015-09-26 4 views
6

Мои logging.properties в Eclipse, выглядел так, когда я изначально отвечал на этот вопрос:Tomcat7 logging hell - почему выходят два разных формата?

handlers = java.util.logging.ConsoleHandler 

org.apache.catalina.core=OFF 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 
java.util.logging.SimpleFormatter.format=JUL %4$s: %2$s%n%4$s: %5$s%n 

Я также сталкиваюсь с таким же вопросом на сервере Linux с такой конфигурацией:

handlers = 2localhost.org.apache.juli.FileHandler, org.apache.juli.FileHandler 

.handlers = org.apache.juli.FileHandler 

2localhost.org.apache.juli.FileHandler.level = INFO 
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
2localhost.org.apache.juli.FileHandler.prefix = localhost. 

org.apache.juli.FileHandler.level = ALL 
org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter 
org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
java.util.logging.SimpleFormatter.format=tomcat: %4$s: %2$s%n%4$s: %5$s%n 

org.apache.catalina.handlers = org.apache.juli.FileHandler 
org.apache.catalina.startup.level = SEVERE 
org.apache.catalina.session.ManagerBase.level = SEVERE 
org.apache.catalina.core.AprLifecycleListener.level=SEVERE 
org.apache.catalina.connector.level = SEVERE 
org.apache.coyote.level=SEVERE 

org.apache.catalina.level=ALL 
org.apache.catalina.startup.HostConfig.level = SEVERE 
org.apache.catalina.loader.WebappClassLoader.level = SEVERE 
org.apache.catalina.session.ManagerBase.level = INFO 

# ServletContext logger 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = ALL 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].formatter = java.util.logging.SimpleFormatter 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].format=servlet: %4$s: %2$s%n%4$s: %5$s%n 

Почему же тогда моей консоль войти в Eclipse выглядит так?

JUL INFO: org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_05\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;c:\Program Files (x86)\Intel\iCLS Client\;c:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Bitvise SSH Client;C:\Program Files (x86)\MySQL\MySQL Utilities 1.4.3\;C:\Program Files (x86)\MySQL\MySQL Utilities 1.4.3\Doctrine extensions for PHP\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Git\cmd;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files (x86)\BaseX\bin;C:\Program Files (x86)\WinMerge;C:\Program Files (x86)\Skype\Phone\;. 
JUL WARNING: org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:ctc_web_front_ui' did not find a matching property. 
JUL INFO: org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
JUL INFO: org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
JUL INFO: org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 359 ms 
JUL INFO: org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
JUL INFO: org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47 
JUL INFO: org.apache.catalina.core.ApplicationContext log 
INFO: No Spring WebApplicationInitializer types detected on classpath 
JUL INFO: org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'servletSpringDispatcher' 
JUL INFO: org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'servletSpringDispatcher': initialization started 

Откуда берутся сообщения об основной информации?

И почему сообщения Catalina.core все еще появляются, хотя я их отключил?

На сервере Linux журнал JULI выглядит следующим образом:

tomcat: FINE: org.apache.catalina.core.ContainerBase addChildInternal 
FINE: Add child StandardHost[localhost] StandardEngine[Catalina] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardServer[8005]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardService[Catalina]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardEngine[Catalina]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardEngine[Catalina]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [Connector[HTTP/1.1-8080]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [Connector[HTTP/1.1-8080]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardService[Catalina]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardServer[8005]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardServer[8005]] to [STARTING_PREP] 
tomcat: FINE: org.apache.catalina.core.NamingContextListener lifecycleEvent 
FINE: Bound StandardServer[8005] 
tomcat: FINE: org.apache.catalina.core.NamingContextListener createNamingContext 
FINE: Creating JNDI naming context 
tomcat: FINE: org.apache.catalina.core.NamingContextListener addResource 

Тот же вопрос относится, почему не все строки начинаются с tomcat:?

UPDATE При отладке я обнаружил, что обе линии каждой записи журнала приходит из java.util.logging.Logger.logp() enter image description here

ответ

1

Ответ был смотрит нам в лицо, от верхней проводкой:

java.util.logging.SimpleFormatter.format=JUL %4$s: %2$s%n%4$s: %5$s%n 
                 ^^^^^^^ 

Дополнительный %n%4$s: в строке формата является причиной того, что дополнительная строка показывает u п. Duh.

-1

Я думаю, что вам не хватает Юля-to SLF4J. Смотрите здесь более подробно slf4j legacy bridge documentation

+0

Это не решит эту проблему. После установки jul-to-slf4j и настройки моста я смог перенаправить все сообщения на logback, но я все еще получаю два разных типа сообщений. –

-1

FINE, ALL, INFO, WARN, ERROR, СЕРЬЕЗНЫЕ, и т.д., все записи в системном журнале уровень s для каждого регистратора. Переключите их все в SEVERE, чтобы иметь наименьший выход журнала. ALL, это в основном эквивалент ведения журнала подробного флага. FINE - это вторая по величине скорость вывода журнала.

+0

Все еще не отвечает, почему я получаю таинственные дополнительные строки журнала, которые не соответствуют строке формата –

+0

, вы попробовали? – Stephan

0

Информационные сообщения, на которые вы ссылаетесь, на самом деле не являются частью ядра. Они генерируются классами в разных пакетах. При вскрытии Catalina библиотек и в определении классов, ответственных за конкретные журналы, здесь конфигурация, которая предотвратила журналы на tomcat 7.0.63, путем добавления по умолчанию logging.properties:

org.apache.catalina.startup.level=OFF 
org.apache.catalina.startup.handlers=1catalina.org.apache.juli.FileHandler.level 

org.apache.catalina.core.level=OFF 
org.apache.catalina.core.handlers=1catalina.org.apache.juli.FileHandler.level 

org.apache.coyote.level=OFF 
org.apache.coyote.handlers=1catalina.org.apache.juli.FileHandler.level 
+1

Всегда завидовать, когда кто-то находит то, что кто-то не мог понять! –

1

Мои logging.properties в Затмении

  1. Я не знаю, как настроено ваше рабочее пространство. Возможно, этот файл не используется вообще.

    Java Logging настроен на свойства системы.

    Вам необходимо одно свойство (-Djava.util.logging.manager), чтобы настроить org.apache.juli.ClassLoaderLogManager как реализацию менеджера журналов для Java Logging.

    Вам нужно другое свойство (-Djava.util.logging.config.file), чтобы настроить путь к файлу конфигурации.

    Обычно оба свойства задаются сценарием запуска (catalina.sh, catalina.bat), но Eclipse запускает java напрямую, без помощи этого скрипта, поэтому эти свойства системы должны быть явно заданы в конфигурации запуска.

    http://tomcat.markmail.org/thread/vpr7mjxmgdvkl3dv

  2. Tomcat JULI поддерживает каждую-загрузчик классов конфигурации заготовки.

    Эта функция позволяет настраивать ведение журнала отдельно для каждого веб-приложения путем упаковки с ним файла WEB-INF/classes/logging.properties.

    Если вы случайно разместили файл logging.properties в пути к классам, он будет иметь тот же эффект: он заменит конфигурацию по умолчанию для классов, загруженных этим загрузчиком классов.

    E.g. известно, что в некоторой версии библиотеки Jollyday (4 года назад) был добавлен неожиданный файл logging.properties, который включал запись FINE.

    .level = ALL

    https://bz.apache.org/bugzilla/show_bug.cgi?id=52011

+0

Это фактически не отвечало на мой вопрос, но спасибо за то, что он пролил свет на процесс инициализации tomcat, что объясняет многое. –

Смежные вопросы