我正在使用托管的WebLogic服务器,并注意到错误并没有按照应该的方式出现在stdout.log文件中。常规sysout正在显示,但是在catch块中发生的任何事情(抛出异常之后)实际上都出现在stdout.log文件的TOP中。
这是我正在运行以复制此问题的测试代码:
...
System.out.println("Testing error logging...");
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("error thrown.");
...
这是我执行该代码后的日志内容(仅显示相关内容):
JAVA Memory arguments: -Xms512m -Xmx512m -XX:CompileThreshold=8000 -XXjava version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
Please use CMSClassUnloadingEnabled in place of CMSPermGenSweepingEnabled in the future
Jun 23, 2015 12:13:10 PM org.apache.axis.configuration.EngineConfigurationFactoryServlet getServerEngineConfig
**SEVERE: Unable to find config file. Creating new servlet engine config file: /WEB-INF/server-config.wsdd**
java.lang.Exception
at ErrorLoggingTest.doGet(ErrorLoggingTest.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3594)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
th Java version:
Starting WLS with line:
...
(lots of logging in between, from the WebLogic server startup process)
...
Testing error logging...
error thrown.
任何人都可以向我解释为什么在记录错误时从顶部覆盖?此外,它似乎缺少配置文件,它正在动态创建。这可能是导致这个问题的原因吗?
我希望所有stdout和stderr转到相同的日志文件,只需将新的日志输出附加到文件的末尾,目前我无法弄清楚如何做到这一点。
谢谢和问候,
布兰登
答案 0 :(得分:2)
关于将weblogic中的JVM输出重定向到同一日志文件,您可以使用以下JVM标志: 的 -Dweblogic.log.RedirectStdoutToServerLogEnabled =真强>
从文件中引用:
运行WebLogic Server实例的JVM将消息发送到标准错误并标准输出。服务器和应用程序代码直接写入这些流而不是使用日志记录机制。通过配置选项,您可以将JVM输出重定向到所有已注册的日志目标,例如服务器终端控制台和日志文件。启用后,日志条目将显示为NOTICE严重性消息。
有关详细信息,请参阅此文档:http://docs.oracle.com/cd/E13222_01/wls/docs92/logging/config_logs.html#wp1008455
此致 Mohab