Tomcat 8启用调试日志记录以列出不需要的jar

Pas*_*ulz 11 logging jsp tomcat tomcat8 archlinux-arm

在Arch Linux ARM上启动Tomcat 8时,我收到以下警告:

信息:至少有一个JAR被扫描用于TLD但尚未包含TLD.为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表.在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间

我已经修改了$ {catalina.home} /logging.properties,如下所述:如何修复JSP编译器警告:一个JAR被扫描用于TLD但尚未包含TLD?

我将一些日志记录级别从INFO更改为FINE,取消注释"org.apache.jasper.compiler.TldLocationsCache.level = FINE"并添加了"org.apache.jasper.servlet.TldScanner.level = FINE".所以文件的结尾现在看起来如下:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost] .level = FINE org.apache.catalina.core.ContainerBase.[Catalina].[localhost] .handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ manager] .level = FINE org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ manager] .handlers = 3manager.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ host-manager] .level = FINE org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ host- manager] .handlers = 4host-manager.org.apache.juli.AsyncFileHandler

#例如,将org.apache.catalina.util.LifecycleBase记录器设置为log#扩展LifecycleBase更改状态的每个组件:#org.apache.catalina.util.LifecycleBase.level = FINE

#要在TldLocationsCache中查看调试消息,请取消注释以下行:org.apache.jasper.compiler.TldLocationsCache.level = FINE org.apache.jasper.servlet.TldScanner.level = FINE

但我仍然在启动时收到警告,而不是不需要的JAR路径.怎么了?

小智 5

尝试调试所有内容:

  1. 将其添加到logging.properties位于以下位置的文件的末尾{CATALINA-HOME}/conf:

    #To see the most detailed level of logging for all classes, uncomment the following line:
    org.apache.catalina.level=FINEST
    
    Run Code Online (Sandbox Code Playgroud)
  2. 重启Tomcat

  3. 从终端运行以下命令以获取需要跳过的jar列表(由@joseph-lust在帖子提供):

    egrep "No TLD files were found in \[file:[^\]+\]" {CATALINA-HOME}/logs/catalina.out -o | egrep "[^]/]+.jar" -o | sort | uniq | sed -e 's/.jar/.jar,\\/g' > ~/skips.txt
    
    Run Code Online (Sandbox Code Playgroud)
  4. skips.txt在您的用户主目录中打开

  5. 将此列表添加到{CATALINA-HOME}/conf/catalina.properties以下行之后:

    org.apache.catalina.startup.TldConfig.jarsToSkip=
    
    Run Code Online (Sandbox Code Playgroud)
  6. 完成后,请务必删除/注释掉,以防止日志文件过大

我仍然不确定为什么会发生这种情况,因为它似乎最适合取消注释TldLocationsCache.


小智 5

一种更简单的方法,在上述帖子的第 1 步中,不是为所有内容启用调试,而是限制为 org.apache.jasper:

用这个:

org.apache.jasper.level = FINEST
Run Code Online (Sandbox Code Playgroud)

取而代之的是:

org.apache.catalina.level=FINEST
Run Code Online (Sandbox Code Playgroud)

  • 这应该是对原始答案的评论 (3认同)