我使用Tomcat 7.0.28,在Ubuntu OpenJDK的1.7下运行,并正尝试修改由java.util.logging.SimpleFormatter使用的格式化字符串。 按照Javadoc中类,我可以指定属性java.util.logging.SimpleFormatter.format更改格式。 事实上,当我运行我在Eclipse Web应用程序,并在我的logging.properties文件更改此属性,它的工作原理。
然而,当我部署应用程序到Tomcat,这个属性似乎并没有产生任何影响。 我相信,我的属性文件被正确读取,因为我做它确实生效(我读的属性从一个文件中使用的其他变化
LogManager.getLogManager().readConfiguration(new FileInputStream(file))
其中,文件是通过我的web.xml文件中的参数配置。 我试图把文件中的WEB-INF /班/ logging.properties,在行为没有变化。
的Javadoc SimpleFormatter规定,如果两个属性文件和系统属性指定格式的字符串,系统属性优先。 我已经验证了系统属性未设置
context.log ("Formatting system property is " + System.getProperty("java.util.logging.SimpleFormatter.format"));
在一个ServletContextListener.contextInitialized方法。
这里是我的日志属性的完整文件
handlers=java.util.logging.ConsoleHandler
# Default logging level for root logger
.level=FINE
# Set the level for the ConsoleHandler
java.util.logging.ConsoleHandler.level=FINE
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=[%1$tF %1$tr] %3$s %4$s: %5$s %n
我用尽了一切我能想到的,包括在两个TOMCAT / conf目录和JRE_HOME / lib目录下修改logging.properties。 似乎没有任何区别。
由于在信息错误报告中指出nolan6000我终于得到了与Tomcat的巨力这方面的工作。
代替:
java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n
它一定要是:
1catalina.java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n
java.util.logging.SimpleFormatter.format确实证明是可调节在任一logging.properties哪位不为我须─或者作为命令行参数(java选项)工作。
命令行参数似乎为我工作。 因为$ JAVA_OPTS变量是经历了这么多的篡改和EVAL结束了,这是我如何解决它(在Debian,JAVA 1.7.0_07,Apache的Tomcat的7.0.30)
$ CATALINA_HOME /斌/ catalina.sh(线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\""
你可能会看到这个错误 。
该缺陷是从Tomcat 7.0.41版本起以及6.0.38起固定。
不知道这是否会解决您的问题,但它可能是值得一试。 我看到了相同的行为,但在我的情况我在做记录设置程序,而不是使用属性。 实验证明,对于java.util.logging.SimpleFormatter.format属性值需要设置BEFORE构造(对我来说)的FileHandler。 我构建的FileHandler后设置它,但构建SimpleFormatter之前。 我不知道,在你的属性文件,定义java.util.logging.SimpleFormatter.format之前定义的任何处理程序属性将解决这个问题。
使用默认格式化模式Tomcat的巨力8需要记录本,你可以将参数传递给全球$tomcat/conf/logging.properties
或web应用特定的$tomcat/webapps/myapp/WEB-INF/classes/logging.properties
文件。
这是我的全局文件,其中也有禁用的经理,web应用日志文件。 记录行是:
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