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 中。

希望这对某人有所帮助。