【发布时间】:2013-04-15 14:31:27
【问题描述】:
让我们开始编码吧:
@Startup
@Singleton
import org.apache.log4j.Logger;
public class MyClass{
public static final Logger logger = Logger.getLogger(MyClass.class.getSimpleName());
@PostConstruct
private void invoke() {
LOG.info("INFO");
LOG.warn("WARN");
LOG.error("ERROR");
LOG.fatal("FATAL");
LOG.debug("DEBUG");
LOG.trace("TRACE");
}
}
如果我改变:
<root-logger> <level name="INFO"/>...</root-logger> to "DEBUG" instead of "INFO"
我有调试控制台。 一切正常。
现在我想改变一些东西。
我通常希望 root-logger 为“INFO”。但 X.Y.Z 包为“DEBUG”;
类似的东西,但它不起作用:
<logger category="XXX.YYY.ZZZ" use-parent-handlers="false">
<level name="DEBUG"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
换句话说。我只想调试 XXX.YYY.ZZZ 包。不是另一个包(“INFO”代表另一个包)。可能是我需要一些过滤器或例外。
这个 XML 不起作用,因为 log4j 的层次顺序是:
OFF <------ PERMITED
FATAL <------ PERMITED
ERROR <------ PERMITED
WARN <------ PERMITED
INFO <----- COSTUME LOGGING PERMITTED UP TO INFO (if root-logger is "INFO)
DEBUG
TRACE
ALL
如果我的根记录器是“INFO”,则仅有权创建服装日志记录到当前包层次结构 UP TO INFO
但我需要一些例外或类似的东西。我不需要任何 XML 配置文件或属性文件。我只需要更改standlone.xml
【问题讨论】: