Openshift tomcat 的日志:catalina.out 和 localhost.out 内容
Openshift tomcat's logs: catalina.out and localhost.out contents
我已经在 openshift
tomcat7
模块下部署了我的 WAR
应用程序。
在我的应用程序中,我使用 log4j
。我的 log4j.properties
看起来像:
log4j.rootCategory=info, A1, A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=myapp.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %p (%t) [%c] - %m%n
log4j.appender.A1.encoding=UTF-8
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d %p (%t) [%c] - %m%n
log4j.appender.A2.encoding=UTF-8
问题是在我的 openshift
应用程序的 $OPENSHIFT_LOG_DIR
文件夹中只有两个日志文件:
[myapp.rhcloud.com logs]\> ls
jbossews.log postgresql.log
在 jbossews.log
中,我只看到与本地 Tomcat 7
下的 运行 应用程序相关的 catalina.out
日志行。更具体地说,在 jbossews.log
中,我看到了一般错误信息,例如:
INFO: Deploying web application archive /var/lib/openshift/54...1d/app-root/runtime/dependencies/jbossews/webapps/myapp.war
Mar 05, 2015 12:00:02 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Mar 05, 2015 12:00:02 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/myapp] startup failed due to previous errors
Mar 05, 2015 12:00:02 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /var/lib/openshift/54...1d/app-root/runtime/dependencies/jbossews/webapps/myapp.war has
finished in 8,867 ms
但是我看不到错误的详细信息,这些错误通常打印在本地 Tomcat 7
下的 localhost.out
上。
那么,如何配置我的设备或应用程序以查看完整日志?谢谢。
UPD:这与 log level
无关,因为我错过的部分日志是 error
级别的。此外,如果我 运行 我的应用程序在本地 tomcat.
下,我可以看到这些东西
在此处找到解决方案:https://forums.openshift.com/log4j-with-tomcat7-it-not-works
简而言之:您必须进入 $OPENSHIFT_DATA_DIR
目录,在此处上传 log4j.jar
并配置 catalina.properties
以从该目录加载 jars
:
common.loader=${catalina.base}/lib,${catalina.base}/lib/.jar,${catalina.home}/lib,${catalina.home}/lib/.jar,/var/lib/openshift/51..36/app-root/data/libs/*.jar
我正在直接从服务器打开日志文件
我的问题是使用命令 tail
使用 cat
查看完整文件:
cat app-root/logs/jbossews.log
我们一直面临同样的问题。在我们的例子中,我们有一个 spring 应用程序,它可以将所有日志正常打印到 jbossews.log
,但是如果其中一个 bean 在启动期间抛出错误,错误堆栈跟踪将不会打印到 jbosews.log
] 或其他任何地方。在 vanilla tomcat 上,这些堆栈跟踪将打印到 localhost.out
正常。我们已经尝试过公认的解决方案,但由于某种原因它不起作用。
但是下面的技巧对我们有用:
在 .openshift/config/logging.properties
中替换为:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
有了这个:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler,java.util.logging.ConsoleHandler
出于某种原因,通过将 java.util.logging.ConsoleHandler
添加为处理程序之一,原版 tomcat 中转到 localhost.out
的堆栈跟踪(和其他消息)现在转到 jbossews.log
在 openshift 中。
希望这对某人有所帮助。
我已经在 openshift
tomcat7
模块下部署了我的 WAR
应用程序。
在我的应用程序中,我使用 log4j
。我的 log4j.properties
看起来像:
log4j.rootCategory=info, A1, A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=myapp.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %p (%t) [%c] - %m%n
log4j.appender.A1.encoding=UTF-8
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d %p (%t) [%c] - %m%n
log4j.appender.A2.encoding=UTF-8
问题是在我的 openshift
应用程序的 $OPENSHIFT_LOG_DIR
文件夹中只有两个日志文件:
[myapp.rhcloud.com logs]\> ls
jbossews.log postgresql.log
在 jbossews.log
中,我只看到与本地 Tomcat 7
下的 运行 应用程序相关的 catalina.out
日志行。更具体地说,在 jbossews.log
中,我看到了一般错误信息,例如:
INFO: Deploying web application archive /var/lib/openshift/54...1d/app-root/runtime/dependencies/jbossews/webapps/myapp.war
Mar 05, 2015 12:00:02 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Mar 05, 2015 12:00:02 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/myapp] startup failed due to previous errors
Mar 05, 2015 12:00:02 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /var/lib/openshift/54...1d/app-root/runtime/dependencies/jbossews/webapps/myapp.war has
finished in 8,867 ms
但是我看不到错误的详细信息,这些错误通常打印在本地 Tomcat 7
下的 localhost.out
上。
那么,如何配置我的设备或应用程序以查看完整日志?谢谢。
UPD:这与 log level
无关,因为我错过的部分日志是 error
级别的。此外,如果我 运行 我的应用程序在本地 tomcat.
在此处找到解决方案:https://forums.openshift.com/log4j-with-tomcat7-it-not-works
简而言之:您必须进入 $OPENSHIFT_DATA_DIR
目录,在此处上传 log4j.jar
并配置 catalina.properties
以从该目录加载 jars
:
common.loader=${catalina.base}/lib,${catalina.base}/lib/.jar,${catalina.home}/lib,${catalina.home}/lib/.jar,/var/lib/openshift/51..36/app-root/data/libs/*.jar
我正在直接从服务器打开日志文件
我的问题是使用命令 tail
使用 cat
查看完整文件:
cat app-root/logs/jbossews.log
我们一直面临同样的问题。在我们的例子中,我们有一个 spring 应用程序,它可以将所有日志正常打印到 jbossews.log
,但是如果其中一个 bean 在启动期间抛出错误,错误堆栈跟踪将不会打印到 jbosews.log
] 或其他任何地方。在 vanilla tomcat 上,这些堆栈跟踪将打印到 localhost.out
正常。我们已经尝试过公认的解决方案,但由于某种原因它不起作用。
但是下面的技巧对我们有用:
在 .openshift/config/logging.properties
中替换为:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
有了这个:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler,java.util.logging.ConsoleHandler
出于某种原因,通过将 java.util.logging.ConsoleHandler
添加为处理程序之一,原版 tomcat 中转到 localhost.out
的堆栈跟踪(和其他消息)现在转到 jbossews.log
在 openshift 中。
希望这对某人有所帮助。