在我的log4j.properties中,我有:
log4j.rootLogger=DEBUG,stdout
log4j.logger.notRootLogger=DEBUG,somewhereelse
Run Code Online (Sandbox Code Playgroud)
appender stdout和somewhereelse都配置正确,stdout写入控制台,somewhereelse写入文件.
在每个类的代码中,我都设置了:
static Logger log = Logger.getLogger("notRootLogger);
Run Code Online (Sandbox Code Playgroud)
^当我不想要东西进入控制台.
-要么-
static Logger log = Logger.getRootLogger();
Run Code Online (Sandbox Code Playgroud)
我什么时候.
我在log4.properties中需要做些什么来停止写入notRootLogger以stdout结尾的内容?根记录器写入的地方是否有某种继承需要以某种方式关闭?
我不想单独为每个单独的类配置一个记录器,我只想记录到控制台.
Jon*_*eet 24
你需要设置additivity = false,IIRC.从log4j手册:
对于给定记录器,每个启用的日志记录请求都将转发到该记录器中的所有appender以及层次结构中较高的appender.换句话说,appender是从记录器层次结构中附加地继承的.例如,如果将控制台appender添加到根记录器,则所有启用的记录请求将至少在控制台上打印.如果另外将文件追加器添加到记录器(例如C),则对C和C的子节点启用的日志记录请求将在文件和控制台上打印.通过将additivity标志设置为false,可以覆盖此默认行为,以便不再添加appender累积.
试试这个:
log4j.rootLogger=DEBUG,stdout
log4j.logger.notRootLogger=DEBUG,somewhereelse
log4j.additivity.notRootLogger=false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12424 次 |
| 最近记录: |