据我所知,log4j可以处理系统属性-Dlog4j.debug。如果你用它运行你的应用程序,你将获得log4j的调试输出。
示例:java -Dlog4j.debug -jar test.jar
log4j 2有类似内容吗?
答案 0 :(得分:7)
2018年1月更新:
从Log4j 2.10开始,这很简单:只需使用系统属性log4j2.debug
运行程序(不需要值;空字符串就可以了)。
状态记录器上的当前(log4j-2.1)文档有点令人困惑。 基本上是:
org.apache.logging.log4j.simplelog.StatusLogger.level
控制状态记录器级别。<Configuration status="trace">
。更新:documentation在log4j-2.2中得到了改进。
答案 1 :(得分:3)
可能令人困惑,Log4J 1.x命令行参数-Dlog4j.debug
的最近等效值是-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=trace
,它设置了Log4J 2.x&#34;状态记录器&#34;要跟踪的级别并提供有关日志记录配置的详细输出。
Log4J 1.x允许您使用配置文件位于-Dlog4j.configuration=file:///var/lib/tomcat7/log4j.xml
的{{1}}在命令行上手动指定配置文件的位置。在Log4J 2.x中,参数/var/lib/tomcat7/log4j.xml
,&#39;配置文件&#39;之间存在细微差别。而不是&#39;配置&#39;。
显然,您需要确保您的配置文件适用于所使用的Log4J版本,XML结构在1.x和2.x之间不同。
答案 2 :(得分:1)
如果有人需要以编程方式设置DEBUG
级别
// for your custom logger
Configurator.setLevel("com.name.of.logger", Level.DEBUG);
// for root logger
Configurator.setRootLevel(Level.DEBUG);
OR,而无需导入
org.apache.logging.log4j.core.config.Configurator.setLevel(
"com.name.of.logger",
org.apache.logging.log4j.Level.DEBUG
);
答案 3 :(得分:0)
让Log4J2启动并运行时遇到了令人沮丧的困难,打印StatusLogger也不例外。从理论上讲,您可以使用status
字段在配置文件中进行设置,但是我无法实现这一目标。
您可以在main方法的开头运行以下命令:
StatusConsoleListener listener = new StatusConsoleListener(Level.ALL);
StatusLogger.getLogger().registerListener(listener);
LogManager.getLogger(LogManager.ROOT_LOGGER_NAME); // initialize logger
请注意,您的main()
类不能有任何静态记录器,或者在调用它们之前它们将被初始化,这意味着不会打印加载状态消息。