无法使Tomcat的java.util日志记录与特定类一起使用

问题描述 投票:0回答:1

我正在使用在Tomcat 8.0容器中运行的Liferay 7.0。

在启动期间,我正在为Liferay挂钩注册特定的类。此类必须位于Tomcat的系统类路径中。因此,.jar文件位于CATALINA_BASE/lib/ext

我需要该类的日志输出,但是我无法弄清楚如何通过Tomcat配置文件正确配置Java的日志。

我对Tomcat的logging.properties进行了如下修改(以粗体显示)

首先,我定义了一个附加处理程序:

处理程序= 1catalina.org.apache.juli.AsyncFileHandler,2myhandler.org.apache.juli.AsyncFileHandler,java.util.logging.ConsoleHandler.handlers = 1catalina.org.apache.juli.AsyncFileHandler,java.util.logging.ConsoleHandler

处理程序的配置如下:

2myhandler.org.apache.juli.AsyncFileHandler.level =精细2myhandler.org.apache.juli.AsyncFileHandler.directory = $ {catalina.base} / logs2myhandler.org.apache.juli.AsyncFileHandler.prefix =我的班级。2myhandler.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter2myhandler.java.util.logging.SimpleFormatter.format =%1 $ tF%1 $ tT%4 $ s [%2 $ s]%5 $ s%6 $ s%n

以及处理程序和我的课程之间的链接是这样完成的:

com.mypackage.MyClass.level = ALLcom.mypackage.MyClass.handlers = 2myhandler.org.apache.juli.AsyncFileHandlercom.mypackage.MyClass.useParentHandlers = false

我的班级使用

private static final LOGGER = Logger.getLogger("com.mypackage.MyClass");

[Tomcat启动时,将创建文件my-hook.log(文件名中带有时间戳)。

但是我的日志消息都没有出现在文件中。

在代码中,例如构造函数中的以下内容:

logger.log(Level.INFO, "MyClass initialized");
System.out.println("*** MyClass loaded ***");

启动Liferay时,我可以在控制台窗口中看到*** MyClass loaded ***消息,但是日志消息未写入(现有)文件中。

我在这里想念什么?

请注意,我无法切换到Log4J(在Liferay Portlet中使用),因为这会在Liferay提供的Log4j和lib/ext中的Log4j之间产生类加载器冲突。>

我正在使用在Tomcat 8.0容器中运行的Liferay 7.0。在启动期间,我正在为Liferay挂钩注册特定的类。此类必须位于Tomcat的系统类路径中。所以...

java tomcat java.util.logging
1个回答
0
投票

因此.jar文件位于CATALINA_BASE / lib / ext中

© www.soinside.com 2019 - 2024. All rights reserved.