tomcat 8.0x java.util.logging.Logger.log to file



我正在使用

private static final java.util.logging.Logger LOGGER = java.util.logging.Logger.getLogger(MyClass.class.getName());
LOGGER.log(Level.INFO, "log message);

登录我的javaweb应用程序的样式。

我在windows 10上从startup.bat(项目要求(启动tomcat 8.0.21。我可以在控制台窗口中看到所有的日志记录,包括java.util.logging.Logger.log日志记录。但我在tomcat标准日志文件%tomcat%/logs/catalina.2018-07-31.loglocalhost.2018-07-31.log中看不到任何java.util.logging.Logger.log日志。

我可以看到所有的tomcat日志,但看不到我的web应用程序日志。我需要在生产中的客户端机器上跟踪web应用程序的一些问题,因为我无法在本地计算机上对这些问题进行建模。

我需要在%tomcat%/logs/catalina.<current_date>.log中查看我的日志以及其他tomcat日志。最好对所有项目使用tomcat日志记录配置。但使用每个项目的配置也是可以接受的。我在谷歌上搜索了一整天,但我找到的所有食谱都不适合我。

请不要主动提出使用log4j。使用java.util.logging是项目要求。这是我的%tomcat%/conf/logging.properties文件

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.level = INFO
1catalina.org.apache.juli.AsyncFileHandler.level = ALL
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
2localhost.org.apache.juli.AsyncFileHandler.level = ALL
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
3manager.org.apache.juli.AsyncFileHandler.level = ALL
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
4host-manager.org.apache.juli.AsyncFileHandler.level = ALL
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = ALL
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = ALL
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = ALL
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
mycompany.package1.level = ALL
mycompany.package2.level = ALL
utils.jaxws.level = ALL

从您的logging.properties中,您似乎正在尝试设置记录器包的级别:

mycompany.package1.level = ALL
mycompany.package2.level = ALL
utils.jaxws.level = ALL

只有在代码中创建了记录器的情况下,才能设置记录器的级别。指定所有确切的记录器名称,或者在您必须创建的代码中,并保留对mycompany.package1mycompany.package2记录器的强引用。

private static final Object loggerParent = java.util.logging.Logger.getLogger("mycompany.package1");
private static final java.util.logging.Logger LOGGER = java.util.logging.Logger.getLogger(MyClass.class.getName());

最新更新