首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Log4J的输出统制

2012-11-09 
Log4J的输出控制今天发现log4j输出信息中有两个很有用的参数:%l之前一直在用 %C.%M 显示日志输出源的完整

Log4J的输出控制
今天发现log4j输出信息中有两个很有用的参数:

%l
之前一直在用 %C.%M 显示日志输出源的完整路径,主要是想日后方便根据完整的类名和方法名找回日志输出语句。
但原来 %l 就已经包含了日志发生的精确位置,最重要的是它带了一个超链接,一点就直接跳转到日志语句,连输出的方法路径都不用看了。。。
不过需要提的是,在eclipse里,%l的前一个字符好像只能是空格,如果是其他字符,超链接会失效或者外观有异样 - -

%c
这个参数输出的信息貌似跟%C、%l之流差不多,BUT...这个参数要屌得多!!
你想让struts闭嘴吗?你受够各种开源库里的DEBUG日志了吗?你是不是试过明明按着%C、%l输出的完整类名,用 log4j.logger.包名 设置了指定包的日志输出级别,但结果TMD跟没设一样?有没有一种感觉那些肏蛋的、狗日的、杀不死的日志每一句都是在对你的嘲笑?。。。
恭喜你,从今天起,你可以雄起了。

这个参数输出的是你传进 Logger.getLogger() 里的类名,在控制指定包的日志输出级别时,其实是这个值在起作用!

举个例子:

package fuck;public class Fucker{private static final Logger LOGGER = Logger.getLogger(String.class.getName());public static void main(String[] args) throws Exception{LOGGER.info("fuck");}}
一开始很傻很天真的我以为想不被fuck,将fuck的门槛调高就行了:
引用log4j.logger.fuck = error结果,当然是和同样很傻很天真的阿娇一样。正如这个社会,fuck与不fuck,都不取决于fuck这件事本身,重点是谁在fuck:
引用log4j.logger.java.lang = error至此,我终于保住了菊花。

附上我的输出格式:
ConversionPattern=<%d{HH:mm:ss}|%p> %l <%c>%n%m%n%n

最后提醒一下,官方特别强调,有输出完整类名的参数,都会带来很大的性能开销,所以在release的时候需要注意移除。

热点排行