[英]Jboss 7.1 log4j costume logging filter or exception
让我们开始编码:
@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”。 但使用XYZ封装则为“ 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
如果我的root记录器是“ INFO”,则仅具有创建服装记录到具有UP TO INFO层次结构的当前程序包的权限
但是我需要一些例外或类似的东西。 我不需要任何XML配置文件或属性文件。 我只需要更改standlone.xml
您将use-parent-handlers
为false
,但记录器上未安装任何处理程序。 您需要将该值更改为true
或向记录器添加处理程序。
将use-parent-handlers
为false只会使用附加到特定记录器的处理程序。 由于您没有附加任何处理程序,因此没有用于将输出记录到的处理程序。
在您的示例中,您使用的是类的简单名称,这意味着类别为MyClass
而不是包名称。
尝试类似:
<logger category="MyClass">
<level name="DEBUG"/>
</logger>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.