java - slf4j + log4j 显示除我的以外的所有日志

我将 slf4j 与 log4j 一起使用,出于某种原因,除了我在代码中编写的日志之外,所有日志都在显示 - Spring 日志、Hibernate 日志,你称之为日志显示,并且在 log4j.properties 中配置的级别.但是,我的日志没有显示。

Maven 依赖项: log4j log4j 1.2.17 测试

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${org.slf4j.version}</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${org.slf4j.version}</version>
    <scope>test</scope>
</dependency>

当使用 -Dlog4j.debug 运行时,我看到我的 log4j.propertes 文件正在被使用

log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@11a5ee7c.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$AppClassLoader@11a5ee7c class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@11a5ee7c.
log4j: Using URL [ile:/C:/x/y/myProject/target/test-classes/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:/C:/x/y/myProject/target/test-classes/log4j.properties

我正在使用以下日志代码:

private static final Logger LOG = LoggerFactory.getLogger(MyClass.class);
LOG.warn("Very informative message");

我的 log4j.properties 文件:

# Define the root logger to the system property "hbase.root.logger".
log4j.rootLogger=DEBUG, console

# Logging Threshold
log4j.threshhold=ALL

#
# console appender
# Add "console" to rootLogger above if you want to use this
#
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %-5p [%t] %C{2}(%L): %m%n

为我的记录器添加特定行也无济于事

log4j.logger.com.my.path=DEBUG, console

我可以看到它正在被识别:

Parsing for [com.my.path] with value=[DEBUG, console].
log4j: Level token is [DEBUG].
log4j: Category com.my.path set to DEBUG

但仍然没有任何记录。

最佳答案

替换这一行:

log4j.rootLogger=DEBUG, console

用这个:

log4j.rootLogger = ALL, Console

删除这两行:

log4j.threshhold=ALL
log4j.appender.console.target=System.out

不确定所有这些模式在做什么,所以我会替换这一行

log4j.appender.console.layout.ConversionPattern=%d %-5p [%t] %C{2}(%L): %m%n

用这个:

log4j.appender.Console.layout.conversionPattern=%m%n

然后这样做:

final static Logger logger = Logger.getLogger(MyClassName.class);
logger.info("This is info");

https://stackoverflow.com/questions/27438232/

相关文章:

c# - 防止标签点击事件作为默认行为

python - 过滤掉特定的 Python 日志消息

java - 无法使用 XStream/Jettison 反序列化多图

java - libgdx scene2d 返回错误的标签高度

java - 无法为 JDT 编译器指定多个源路径

java - JXLayer 实现

java - 如何组织包之间有空白的导入?

c++ - 如何解锁Windows登录屏幕

android - 无法在 TYPE_SYSTEM_ALERT 窗口中获得焦点并开始编辑 EditT

haskell - 用 GHC 将小型 Haskell 程序编译成巨大的二进制文件