当启动应用程序时,通常只在控制台中打印log.info(...)。当在调试模式下启动应用程序时,打印log.info(...)和log.debug(...)。
我可以在main方法中设置调试级别而不阅读系统属性吗?
@Slf4j
public class Logging {
public static void main(String[] args) {
log.info("This message should be logged when running the app normally");
log.debug("This message should be logged when running the app in debug mode");
}
}
字符串
配置文件(log4j2.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!-- 'status' defines the log level of the internal log4j events -->
<Configuration status="warn">
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1} - %m%n</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="console"/>
</Root>
</Loggers>
</Configuration>
型
1条答案
按热度按时间5jvtdoz21#
应用程序不应该知道它们是否在调试中运行。相反,使用不同的命令行参数(对于Intellij:How do you input command line arguments in IntelliJ IDEA?),然后在代码中以编程方式设置日志级别(参见答案Programmatically change log level in Log4j2)。