【发布时间】:2019-01-11 08:31:29
【问题描述】:
我正在尝试让 Weblogic 12c为应用程序单独记录,而不是将所有内容都写入服务器日志。
我正在使用 java.util.logging 如下:
private static final Logger log = Logger.getLogger(ReceiveController.class.getName());
...
log.info("Initializing...");
这是我的 weblogic.xml:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<context-root>mywebapp</context-root>
<logging>
<log-filename>mywebapp.log</log-filename>
<logging-enabled>true</logging-enabled> <!--true/false - no difference-->
</logging>
</weblogic-web-app>
日志文件 mywebapp.log 已创建,但日志仍会转到 AdminServer.log。
我的期望: mywebapp 的日志将转到 mywebapp.log,而不是 AdminServer.log。
此外,https://docs.oracle.com/cd/E24329_01/web.1211/e21049/weblogic_xml.htm#i1063198 上显示“需要文件名的完整地址。”,但即使仅指定了文件名,也会创建文件。 mywebapp.log 是空的,即使我提供了完整路径。
更新。问题不在于按记录器名称分隔日志消息。例如,我们有两个基于 Spring Framework 的应用程序。在这两种情况下,记录器名称都以“org.springframework”之类的开头。问题是即使记录器名称相同,如何分隔消息。
例如Tomcat uses customised LogManager:
Apache Tomcat 有自己的几个关键元素的实现 java.util.logging API。这种实现称为 JULI。钥匙 组件有一个自定义的 LogManager 实现,即知道 在 Tomcat 上运行的不同 Web 应用程序(以及它们的不同 类加载器)。它支持私有的每个应用程序日志记录 配置。当 Web 应用程序运行时,Tomcat 也会通知它 从内存中卸载,以便对其类的引用可以 清除,防止内存泄漏。
【问题讨论】:
-
我没有找到它的记录位置,但是 ServletContext.log(...) 方法记录的消息被写入应用程序日志。这是我发现的唯一方法,软件开发人员如何将内容写入此日志(在 Weblogic 14c 上尝试过)。
标签: java weblogic weblogic12c java.util.logging weblogic14c