JBA*_*BAM 12 configuration log4j pattern-layout
在log4j PatternLayout(log4j patternLayout)中使用时,我无法确定使用这两个log4j转换字符之间的确切区别
有人可以举个例子,说明这两个会有所不同吗?
类别是否始终与班级名称匹配?
问候,
MaD*_*aDa 18
如果您以文档建议的流行方式初始化记录器,并在X类中使用它,它将是相同的:
Logger logger = Logger.getLogger(com.foo.X.class);
Run Code Online (Sandbox Code Playgroud)
那么你会得到相同的%c和%C,因为记录器名称(通过构建"com.foo.X.class.getName()"),将匹配其中的类名发出logging语句.
打电话给你的记录器"东西"
Logger logger = Logger.getLogger("something");
Run Code Online (Sandbox Code Playgroud)
你将拥有"东西" %c和类名%C.
注意,这%C是由当前线程的堆栈跟踪中的log4j计算出来的,因此它会带来很大的性能影响,不像%c是一个String.您可以进行有趣的实验来验证它:
package com.foo;
class A {
private Logger = Logger.getLogger(B.class);
// ...
logger.log("inside A class");
}
Run Code Online (Sandbox Code Playgroud)
模式[%c][%m]假设的输出B在包com.foo中将是:
[com.foo.B][inside A class]
Run Code Online (Sandbox Code Playgroud)
[%C][%m]无论位置如何,模式的输出B将是:
[com.foo.A][inside A class]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |