Tomcat7日志logging – 为什么两种不同的格式出来?

在Eclipse中我的logging.properties看起来像这样,当我最初发布这个问题:

 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 

在这个configuration下,我也在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 

为什么然后我的控制台login到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 

裸INFO消息来自哪里?

为什么catalina.core信息仍然显示,即使我把它们设置为OFF?

在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 [org.apache.catalina.deploy.NamingResources@13fee20c] to [INITIALIZING] tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal FINE: Setting state for [org.apache.catalina.deploy.NamingResources@13fee20c] 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 [org.apache.catalina.connector.MapperListener@737996a0] to [INITIALIZING] tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal FINE: Setting state for [org.apache.catalina.connector.MapperListener@737996a0] 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:开头tomcat:

更新在debugging的时候,我发现每个日志条目的BOTH LINES来自java.util.logging.Logger.logp() 在这里输入图像描述

在Eclipse中我的logging.properties

  1. 我不知道你的工作区是如何配置的。 也许这个文件根本不用。

    Java记录由系统属性配置。

    您需要一个属性( -Djava.util.logging.manager )将org.apache.juli.ClassLoaderLogManager配置为Java日志记录的日志管理器实现。

    您需要其他属性( -Djava.util.logging.config.file )来配置配置文件的路径。

    通常,这两个属性都是由启动脚本( catalina.shcatalina.bat )设置的,但是Eclipse不需要该脚本的帮助就可以直接启动java,因此必须在启动配置中明确设置这些系统属性。

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

  2. Tomcat JULI支持每个类加载器的日志记录配置。

    此功能允许通过使用它打包WEB-INF/classes/logging.properties文件来为每个Web应用程序单独配置日志记录。

    如果意外地将logging.properties文件放入classpath中,它将会产生相同的效果:它将取代由该类加载器加载的类的默认配置。

    例如,已知Jollyday库的一些版本(4年前)包含一个意外的logging.properties文件,该文件启用了FINE日志记录。

    .level = ALL

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

答案一直在盯着我们,从发布的顶部:

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

额外的%n%4$s:格式字符串是什么导致额外的行显示。 咄。

您提到的信息消息实际上并不是核心的一部分。 它们是由不同包中的类生成的。 通过解剖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 

我认为你错过了JUL-to-slf4j。 在这里看到更多的细节slf4j遗产桥文件

FINE,ALL,INFO,WARN,ERROR,SEVERE等都是每个记录器的日志级别 。 将它们全部切换到SEVERE以使最少的日志输出。 ALL,基本上就是一个详细标志的日志记录等价物。 FINE是第二高的日志输出速率。