Tomcat 中未捕获的异常打印到 localhost.[date].log 而不是 catalina.out

Posted

技术标签:

【中文标题】Tomcat 中未捕获的异常打印到 localhost.[date].log 而不是 catalina.out【英文标题】:Uncaught exceptions in Tomcat print to localhost.[date].log instead of catalina.out 【发布时间】:2011-05-01 02:25:14 【问题描述】:

我正在运行 tomcat 6.0.20(如果这很重要,则使用 spring)并且似乎无法从我的代码中抛出的未捕获异常获取堆栈跟踪以打印到 catalina.out。

我正在尝试模仿您在 Eclipse 控制台中看到的输出。当我在生产服务器上部署战争并启动 tomcat 时,大部分输出都会发送到 catalina.out,但我自己的代码中抛出的异常的堆栈跟踪会发送到 tomcat/logs/localhost.[date].log。

如何将所有相关的日志记录到一个文件中(类似于 eclipse 的控制台)?

我只是通过运行 tomcat/bin/startup.sh 来启动服务器

【问题讨论】:

它们是否存在于 stderr.log 文件中? 不确定该文件在哪里 - 我在 tomcat/logs 中看不到它 【参考方案1】:

编辑TOMCAT_HOME/conf/logging.properties

默认情况下,catalina 引擎会记录到 catalina.log,localhost 会记录到 localhost.log

如下图

1catalina.org.apache.juli.FileHandler.level = ALL
1catalina.org.apache.juli.FileHandler.directory = $catalina.base/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

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

选择并编辑.prefix 以指向您想要的那个。

更新 catalina.outcatalina.sh 启动脚本中被显式引用,如下所示(但不在相应的 bat 文件中)——这就是为什么我在 windows 上看不到 .out 文件而只在 *nix 系统上看到的原因

"$CATALINA_BASE"/logs/catalina.out 2>&1

个人我更喜欢 Catalina 引擎日志与我的应用程序日志分开

【讨论】:

我知道它如何控制 catalina.[date].log 和 localhost.[date].log 的内容,但什么决定了 catalina.out 的内容? 我听说 catalina.out 是“控制台输出”(标准错误和标准输出),而 localhost.log 是“服务器日志记录”(可能是未捕获的异常?)

以上是关于Tomcat 中未捕获的异常打印到 localhost.[date].log 而不是 catalina.out的主要内容,如果未能解决你的问题,请参考以下文章

设置 NSManagedObject 的 Bool 属性会引发“iOS 10 中未捕获的异常”

未能执行目标 com.spotify:docker-maven-plugin:0.4.3:build 捕获异常:HttpHostConnectException: Connect to localho

来自第 3 方静态库的回调中未捕获的异常

ASP.NET:在 global.asax 中未捕获安全异常

C# 截获某个域中未捕获的异常

Firebase 数据库 - Firebase 数据库运行循环 (19.3.0) 中未捕获的异常