Modifying java.util.logging.SimpleFormatter format property under Tomcat

会有一股神秘感。 提交于 2019-11-29 03:33:06

Thanks to info in the bug report pointed out by nolan6000 I finally got this working with tomcat-juli.

Instead of:

java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n

it has to be:

1catalina.java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n

java.util.logging.SimpleFormatter.format is indeed documented to be settable in either logging.properties -which does not work for me either- or as a command line argument (java option).

The command line argument appears to work for me. Because the $JAVA_OPTS variable is going through so much tampering and ends up in eval, this is how I solved it (on Debian, java 1.7.0_07, apache-tomcat-7.0.30)

$CATALINA_HOME/bin/catalina.sh (line 230):

JAVA_OPTS="$JAVA_OPTS \"-Djava.util.logging.SimpleFormatter.format=%1\\\$tY-%1\\\$tm-%1\\\$td %1\\\$tH:%1\\\$tM:%1\\\$tS.%1\\\$tL %4\\\$s %3\\\$s %5\\\$s%6\\\$s%n\""
peterh

You may be witnessing this bug.

The bug is fixed from Tomcat version 7.0.41 onwards as well as 6.0.38 onwards.

Don't know if this will solve your problem, but it may be worth a try. I was seeing the same behavior, although in my case I was doing the logging setup programmatically instead of using properties. Turns out that the property value for java.util.logging.SimpleFormatter.format needs to be set BEFORE constructing the (in my case) FileHandler. I was setting it after constructing the FileHandler, but before constructing SimpleFormatter. I wonder if, in your properties file, defining java.util.logging.SimpleFormatter.format BEFORE defining any of the Handler properties will solve the problem.

Using a formatter pattern in default Tomcat 8 JULI logger needs this, you may put arguments to a global $tomcat/conf/logging.properties or webapp specific $tomcat/webapps/myapp/WEB-INF/classes/logging.properties file.

This is my global file where have also disabled a manager-webapp logging files. Logging line is:
2015-09-23 17:32:11 INFO org.apache.catalina.startup.Catalina Server startup in 1028 ms

#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, 2localhost.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

# formatter attributes = date, source, logger, level, message, thrown
java.util.logging.SimpleFormatter.format = %1$tF %1$tT %4$s %3$s %5$s%6$s%n

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.encoding = UTF-8
1catalina.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
#1catalina.org.apache.juli.AsyncFileHandler.bufferSize = 2048

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.encoding = UTF-8
2localhost.org.apache.juli.AsyncFileHandler.formatter = java.util.logging.SimpleFormatter
#2localhost.org.apache.juli.AsyncFileHandler.bufferSize = 2048

#3manager.org.apache.juli.AsyncFileHandler.level = FINE
#3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
#3manager.org.apache.juli.AsyncFileHandler.prefix = manager.

#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.

java.util.logging.ConsoleHandler.level = FINE
#java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

#org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
#org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler

#org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
#org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler

# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE

# To see debug messages in TldLocationsCache, uncomment the following lines
#org.apache.jasper.compiler.TldLocationsCache.level = FINE
#org.apache.jasper.servlet.TldScanner.level=FINE
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!