Log4j:如何编写配置?
Log4j: how to compose config?
我在项目中添加了Log4j2,并添加了config。
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
然后,我在这里记录代码:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
...
final static Logger logger = LogManager.getLogger(AbstractEditor.class);
...
logger.info("updated: " + entity);
logger.debug("==> debug");
logger.info("==> info");
logger.warn("==> warn");
logger.error("==> error");
logger.fatal("==> fatal");
logger.trace("==> trace");
据我了解,所有级别高于DEBUG的日志都必须写入控制台和文件。但只有这个被打印到控制台:
15:08:52.285 [http-nio-8080-exec-1] ERROR ru.example.AbstractEditor - ==> error
15:08:52.292 [http-nio-8080-exec-1] FATAL ru.example.AbstractEditor - ==> fatal
我看到这个字符串与我的配置不匹配。而且它们没有写入文件。当我添加此配置时,所有日志从控制台中消失,不包括这 2 个字符串。
请帮助编写配置以在控制台和文件上查看所有级别为 DEBUG 的日志。
您正在以编程方式使用 Log4j 2,但使用的是 Log4j 1 的配置格式。Log4j 2 将忽略您的配置并使用默认配置。你有2个选择。
- 将您的配置转换为使用 Log4j 2 语法(推荐),或者
- 通过设置系统 属性 "log4j1.compatibility=true" 启用 Log4j 2 对 log4j 1 配置文件的实验性支持。此支持是在版本 2.13.0 中添加的,因此您必须使用该版本。 属性 文件也必须命名为 log4j.properties,而不是 log4j2.properties.
我在项目中添加了Log4j2,并添加了config。
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
然后,我在这里记录代码:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
...
final static Logger logger = LogManager.getLogger(AbstractEditor.class);
...
logger.info("updated: " + entity);
logger.debug("==> debug");
logger.info("==> info");
logger.warn("==> warn");
logger.error("==> error");
logger.fatal("==> fatal");
logger.trace("==> trace");
据我了解,所有级别高于DEBUG的日志都必须写入控制台和文件。但只有这个被打印到控制台:
15:08:52.285 [http-nio-8080-exec-1] ERROR ru.example.AbstractEditor - ==> error
15:08:52.292 [http-nio-8080-exec-1] FATAL ru.example.AbstractEditor - ==> fatal
我看到这个字符串与我的配置不匹配。而且它们没有写入文件。当我添加此配置时,所有日志从控制台中消失,不包括这 2 个字符串。
请帮助编写配置以在控制台和文件上查看所有级别为 DEBUG 的日志。
您正在以编程方式使用 Log4j 2,但使用的是 Log4j 1 的配置格式。Log4j 2 将忽略您的配置并使用默认配置。你有2个选择。
- 将您的配置转换为使用 Log4j 2 语法(推荐),或者
- 通过设置系统 属性 "log4j1.compatibility=true" 启用 Log4j 2 对 log4j 1 配置文件的实验性支持。此支持是在版本 2.13.0 中添加的,因此您必须使用该版本。 属性 文件也必须命名为 log4j.properties,而不是 log4j2.properties.