[size=medium]今天发现log4j输出信息中有两个很有用的参数:
[b]%l[/b]
之前一直在用 %C.%M 显示日志输出源的完整路径,主要是想日后方便根据完整的类名和方法名找回日志输出语句。
但原来 %l 就已经包含了日志发生的精确位置,最重要的是它带了一个超链接,一点就直接跳转到日志语句,连输出的方法路径都不用看了。。。
不过需要提的是,在eclipse里,%l的前一个字符好像只能是空格,如果是其他字符,超链接会失效或者外观有异样 - -
[b]%c[/b]
这个参数输出的信息貌似跟%C、%l之流差不多,BUT...这个参数要屌得多!!
你想让struts闭嘴吗?你受够各种开源库里的DEBUG日志了吗?你是不是试过明明按着%C、%l输出的完整类名,用 [i]log4j.logger.包名[/i] 设置了指定包的日志输出级别,但结果TMD跟没设一样?有没有一种感觉那些肏蛋的、狗日的、杀不死的日志每一句都是在对你的嘲笑?。。。
恭喜你,从今天起,你可以雄起了。
这个参数输出的是你传进 Logger.getLogger() 里的类名,在控制指定包的日志输出级别时,其实是这个值在起作用!
举个例子:[/size]
[quote]log4j.logger.fuck = error[/quote]结果,当然是和同样很傻很天真的阿娇一样。正如这个社会,fuck与不fuck,都不取决于fuck这件事本身,重点是谁在fuck:
[quote]log4j.logger.java.lang = error[/quote]至此,我终于保住了菊花。
附上我的输出格式:
ConversionPattern=<%d{HH:mm:ss}|%p> %l <%c>%n%m%n%n
最后提醒一下,官方特别强调,有输出完整类名的参数,都会带来很大的性能开销,所以在release的时候需要注意移除。
[/size]
[b]%l[/b]
之前一直在用 %C.%M 显示日志输出源的完整路径,主要是想日后方便根据完整的类名和方法名找回日志输出语句。
但原来 %l 就已经包含了日志发生的精确位置,最重要的是它带了一个超链接,一点就直接跳转到日志语句,连输出的方法路径都不用看了。。。
不过需要提的是,在eclipse里,%l的前一个字符好像只能是空格,如果是其他字符,超链接会失效或者外观有异样 - -
[b]%c[/b]
这个参数输出的信息貌似跟%C、%l之流差不多,BUT...这个参数要屌得多!!
你想让struts闭嘴吗?你受够各种开源库里的DEBUG日志了吗?你是不是试过明明按着%C、%l输出的完整类名,用 [i]log4j.logger.包名[/i] 设置了指定包的日志输出级别,但结果TMD跟没设一样?有没有一种感觉那些肏蛋的、狗日的、杀不死的日志每一句都是在对你的嘲笑?。。。
恭喜你,从今天起,你可以雄起了。
这个参数输出的是你传进 Logger.getLogger() 里的类名,在控制指定包的日志输出级别时,其实是这个值在起作用!
举个例子:[/size]
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");
}
}
[size=medium]一开始很傻很天真的我以为想不被fuck,将fuck的门槛调高就行了:
[quote]log4j.logger.fuck = error[/quote]结果,当然是和同样很傻很天真的阿娇一样。正如这个社会,fuck与不fuck,都不取决于fuck这件事本身,重点是谁在fuck:
[quote]log4j.logger.java.lang = error[/quote]至此,我终于保住了菊花。
附上我的输出格式:
ConversionPattern=<%d{HH:mm:ss}|%p> %l <%c>%n%m%n%n
最后提醒一下,官方特别强调,有输出完整类名的参数,都会带来很大的性能开销,所以在release的时候需要注意移除。
[/size]