Tomcat9 部署在 Ubuntu 18.04 上。此问题仅适用于 Tomcat 版本 9。有一个 catalina。日期.log 文件存在于日志文件夹中,但它不显示来自我们的 Web 应用程序的任何控制台打印输出。
我已经在 logging.properties 中将 ConsoleHandler 级别设置为 ALL,但仍然没有日志。
任何指针,想法?谢谢!
我刚刚部署了 tomcat 9,我想在它运行时检查 catalina.out 日志,但是我注意到当它停止时,它会将日志输出转储到 catalina.[date].txt 文件中。是否需要做一些额外的配置来启用 catalina.out 的实时日志记录?
所以我在 Ubuntu 18.04.2 中遇到了 Tomcat 9 的问题。Tomcat 8 运行良好,它将 Java 堆栈跟踪记录到 /var/log/catalina.out 中。不幸的是,Tomcat 9 仅通过 apt 使用默认的 Ubuntu 配置记录 GET 和 POST 请求。
我查了一下,似乎有几个线程如何修复,最近的是这个:tomcat 9 中的 catalina.out 在哪里?- 但问题是我的 catalina.sh 看起来与此答案中显示的文件非常不同。
我的 catalina.sh 中相似(但有很大不同)的部分如下。出于某种原因,在 apt 安装中,它看起来不是想要启动 catalina,而是试图找到它的 PID?:
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
[...]
elif [ "$1" = "start" ] ; then
if [ ! -z "$CATALINA_PID" ]; then
if [ -f "$CATALINA_PID" ]; then
if [ -s "$CATALINA_PID" ]; then
echo "Existing PID …
Run Code Online (Sandbox Code Playgroud) 我有一个 Java webapp,它在 Ubuntu Linux 上的 Apache Tomcat 下运行。当我从 Tomcat 8 升级到 Tomcat 9 时,应用程序无法再将日志文件写入/var/log/myapp
. 我不明白为什么它没有权限登录到这个位置。
我的第一个想法是用户改变了。Tomcat 8 在tomcat8:tomcat8
用户下运行。Tomcat 9 在tomcat:tomcat
用户下运行。我用这些权限更新了目录。无论是tomcat
用户和tomcat
组具有写权限。
我还检查了该目录的写入和执行权限。该目录具有写入和执行权限,所有父目录都具有执行权限。
/var/log/myapp/ drwxrwxr-x tomcat tomcat
/var/log drwxrwxr-x root syslog
/var drwxr-xr-x root root
/ drwxr-xr-x root root
Run Code Online (Sandbox Code Playgroud)
如果我在我的 Web 应用程序下运行以下代码
File logdir = new File("/var/log/myapp");
setAttribute("debug",
"<br>user: " + System.getProperty("user.name") +
"<br>execute: " + logdir.canExecute() +
"<br>read: " + logdir.canRead() +
"<br>write: " + logdir.canWrite()
);
Run Code Online (Sandbox Code Playgroud)
它打印出没有写权限
user: tomcat …
Run Code Online (Sandbox Code Playgroud)