在logging.properties中自定义日志格式

时间:2011-06-06 16:33:23

标签: java tomcat logging log4j java.util.logging

我需要在Tomcat 7中配置日志格式的方向。我在日志记录配置方面相对较新,所以请原谅幽默这个问题,如果它看起来有点基础......

使用logging.properties中配置的Tomcat中的标准日志记录显示格式为:

的日志
Jun 6, 2011 9:27:00 AM com.class.Control_WS callWebService 
INFO: Response received from Control_WS:[Y]

我想自定义这些日志以压缩到一行,并将日期格式扩展为包含毫秒。

示例:

[2011-05-04T11:37:00.037|INFO|javax.enterprise.system.stream.out|Response recieved from Control_WS:[Y]]

我可以使用JUL做什么,还是需要切换到LOG4J?

可以提供任何可以提供的简单示例或方向。

2 个答案:

答案 0 :(得分:9)

如果您使用的是Java 7(或更高版本:-)),则无需再为java.util.logging(JUL)创建自定义格式化程序类。在Java 7中有一个新属性java.util.logging.SimpleFormatter.format,它控制JUL SimpleFormatter如何打印信息。因此,只要您使用的是SimpleFormatter(无论如何都是默认值),那么这将有效。

一些陷阱:

  • 确保实际使用Java 7. :-)
  • 请务必使用有效的格式字符串。如果您提供的format无效,JUL会将静默恢复为默认格式(标准丑陋的双线)。

答案 1 :(得分:3)

看起来您可以通过创建扩展Formatter的自定义类然后在logging.properties中将其指定为处理程序的格式化程序来实现此目的。例如,如果您使用ConsoleHandler,则可以使用:

java.util.logging.ConsoleHandler.formatter = com.mycompany.MyFormatter

然后将类文件(自己或在jar中)放在tomcat的类路径中的某个位置。我会在那里创建一个jar,然后将该jar放入${catalina.home}/lib/ext