【发布时间】:2016-05-02 18:28:45
【问题描述】:
假设我有 2 个 Web 应用程序(A 和 B)托管在同一个 weblogic 服务器中。我在每个 Web 应用程序的 /WEB-INF 下定义了一个 logging.properties 文件。属性文件为不同的类定义了一组日志级别和一个文件处理程序,webapp A 将日志写入 A.log,webapp B 将日志 B.log 写入。标准 java.util.logging 包用于日志记录。
定义了一个 servlet 上下文侦听器,以便在上下文初始化时读取 logging.properties 文件。代码片段如下:
InputStream is = sCtx.getResourceAsStream("/WEB-INF/logging.properties");
LogManager logManager = LogManager.getLogManager();
logManager.readConfiguration(is);
Logger rootLogger = Logger.getLogger("");
SysLogFileHandler fileHandler;
try
{
String location = SysLogFileHandler.getSysLogFilePath();
String fileName = SysLogFileHandler.LOG_FILE_PREFIX + "%d.log";
fileHandler = new SysLogFileHandler(location + File.separator + fileName, true);
fileHandler.setEncoding(Constant.DEFAULT_CHARSET);
fileHandler.setLevel(Level.ALL);
rootLogger.addHandler(fileHandler);
}
catch (Exception e)
{
e.printStackTrace();
}
我希望来自 webapp A 的日志仅写入 A.log,而 webapp B 仅写入 B.log。然而,结果并不如预期。来自 A 和 B 的所有日志都仅写入 1 个日志文件,具体取决于最后启动的 webapp。
请问在 webapp 环境中单独的日志文件的正确方法是什么?
【问题讨论】:
-
我不是 weblogic 专家,但通常记录器类由服务器在根类加载器中加载,因此您将只有一个记录器管理器,因此它只加载一个配置。但是您可以在服务器级别设置配置并按命名空间创建 2 个文件。
标签: java servlets logging web-applications