java如何配置ApacheTomcat以在catalina的时间戳中输出时区。出档了吗?
我试图将ApacheTomcat9配置为在catalina中输出带有时间戳的时区。出文件。现在,我只是使用默认的日志记录。属性配置,此处显示的相关部分:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
我尝试使用“java.util.logging.SimpleFormatter”代替“org.apache.juli.OneLineFormatter”,如下所示:
#java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.format = "%1$tb %1$td, %1$tY %1$tH:%1$tM:%1$tS %1$tz %2$s%n%4$s: %5$s%n"
我可以看到它使用的是SimpleFormatter,因为时间戳格式确实略有变化。但是,它不会更改为我在“java.util.logging.ConsoleHandler.format”属性中指定的内容
有没有一种方法可以做到这一点而不用切换到使用类似log4j的东西?我的配置缺少什么
ApacheTomcat 9.0.22 OpenJDK 1.8.0_222
编辑:
下面是一些示例,显示Tomcat在启动时的第一行输出。从默认配置“logging.properties”文件(与ApacheTomcat tar.gz分发版一起分发)中,我在启动时获得以下信息:
20-Nov-2019 11:46:45.056 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.22
如果我修改了“conf/logging.properties”文件,将“java.util.logging.ConsoleHandler.formatter”属性更改如下:
#java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
我现在明白了:
Nov 20, 2019 11:50:05 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name: Apache Tomcat/9.0.22
作为文件中的第一个事件(实际上是两行)。所以它实际上改变了,这告诉我我在正确的地方。现在我想格式化这行
设置format属性时:
#java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%d %5p %tz %c{1}:%L:(%t) - %m%n
我在启动时得到以下信息:
Nov 20, 2019 11:56:44 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name: Apache Tomcat/9.0.22
它看起来与未设置format属性的日志输出基本相同
# 1 楼答案
设置格式是不够的。您还需要明确告诉记录器使用以下格式:
将此添加到日志中。属性文件:
对于每个记录器,添加以下行:(Catalina记录器上的示例)
像这样:
在您的记录器将使用正确的格式化程序之后,您可以使用该格式来满足您的时间戳/时区需要
别忘了重新启动Tomcat
如果你还需要什么,请告诉我