Ale*_*uch 44 java logging log4j
我希望log4j在我的应用程序中有两个不同的记录器,并且在他们写入尊重日志的内容之间没有"重叠".
例如:
我的log4j.properties如下:
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Run Code Online (Sandbox Code Playgroud)
我的Java代码如下:
public static void main(String[] args) {
PropertyConfigurator.configure(Client.class
.getResource("/log4j.properties"));
xdasLogger = Logger.getLogger("xdasLogger");
logger = Logger.getLogger(Client.class);
logger.info("normal");
xdasLogger.info("xdas");
}
Run Code Online (Sandbox Code Playgroud)
但我的控制台输出如下:
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
xdas
Run Code Online (Sandbox Code Playgroud)
请注意,"XDAS"由两个记录logger和xdasLogger,这是不可取的.
有谁知道我需要将哪些更改放入我的log4j.properties以将控制台输出更改为以下内容?
normal
2012-06-28 09:52:44,580 INFO xdasLogger - xdas
Run Code Online (Sandbox Code Playgroud)
解决方案(取自已接受的答案):
log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas
log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
Run Code Online (Sandbox Code Playgroud)
kjp*_*kjp 45
尝试将记录器的可加性设置为false.这将避免传播到rootLogger.
log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53044 次 |
| 最近记录: |