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

我在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?

任何可以提供的简单示例或方向都将非常受欢迎。

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

一些陷阱:

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

看起来你会这样做是通过创建一个扩展Formatter的自定义类,然后在logging.properties中指定它作为处理程序的格式化程序。 例如,如果您使用的是ConsoleHandler ,则可以使用:

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

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