将应用程序部署到Tomcat后,java.util.logging.FileHandler无法正常工作

igetnqfo  于 2022-11-13  发布在  Java
关注(0)|答案(1)|浏览(127)

我有一个java web应用程序,我把它部署到了tomcat上。我使用java.util.logging进行日志记录。下面是logging.properties文件。

handlers=java.util.logging.FileHandler,org.apache.juli.FileHandler,java.util.logging.ConsoleHandler

java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.pattern =%h/DemoWebAppLogs/DemoWebApp%u%g.log
java.util.logging.FileHandler.append=true
java.util.logging.FileHandler.limit = 5000
java.util.logging.FileHandler.count = 5000
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

这是我的代码的GitHub链接。
当我在eclipse上调试/运行应用程序时,控制台和文件日志记录都工作正常。
在C:/Users/User中创建DemoWebAppLogs文件夹,并将DemoWebApp00.log和
创建DemoWebApp00.log.lck文件。
但是当我在tomcat上部署应用程序时,文件日志记录不起作用(控制台日志记录在起作用)。只创建了DemoWebAppLogs文件夹,但没有.log或.lck文件。
我使用Eclipse导出了DempWebApp.war文件,并将该文件放在 Catalina _HOME/webapps中。我使用的是tomcat 9.0.55。

k4aesqcs

k4aesqcs1#

在您的代码中,您不需要调用Tomcat下的LogManager.readConfiguration。
JULI在默认情况下是启用的,除了常规的全局java.util.logging配置之外,它还支持每个类加载器的配置。这意味着日志可以在以下层配置:

  • 全局。这通常在${ Catalina .base}/conf/ www.example.com文件中完成logging.properties。该文件由java.util.logging.config.file系统属性指定,该属性由启动脚本设置。如果该属性不可读或未配置,则默认使用JRE中的${java.home}/lib/logging.properties文件。
  • 在web应用程序中.该文件将是WEB-INF/classes/logging.properties

只需将www.example.com放在logging.propertiesWEB-INF/classes中即可。
但是当我在tomcat上部署应用程序时,文件日志记录不起作用(控制台日志记录在起作用)。只创建了DemoWebAppLogs文件夹,但没有.log或.lck文件。
FileHandler从未开启,因为它未被呼叫、路径指向其他位置,或开启失败。
根记录程序可以延迟加载处理程序,直到它看到日志消息为止。请尝试将级别设置为“全部”。检查Tomcat的所有日志文件,包括Tomcat进程的任何控制台输出。如果无法加载事件记录,则这些日志中应该会显示错误消息。

相关问题