停止显示在命令行中的日志消息

时间:2014-02-22 11:18:47

标签: maven logging log4j slf4j

我有一个maven项目,其中包含以下依赖关系:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

我的属性文件如下所示:

### Default logger configuration ###
log4j.rootLogger = INFO, fa
log4j.appender.fa = org.apache.log4j.FileAppender
log4j.appender.fa.File = logs/ServerLogs.log
log4j.appender.fa.layout = org.apache.log4j.PatternLayout
log4j.appender.fa.layout.ConversionPattern = %d{ISO8601} %p [%t] %c (%F:%L) - %m%n

### Set Settings for Hibernate Logging ###
log4j.logger.org.hibernate = ERROR
### Set Settings for Spring Framework Logging ###
log4j.logger.org.springframework= ERROR

问题在于,当我执行如下语句时:

  

logger.info(“首次初始化数据库连接”);

此日志消息写入我在属性文件中指定的文件中,但它也会附加在命令行中。如何禁用此行为?我希望消息只打印在文件中,而不是打印在命令行中。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现这会完全禁用log4j:

org.apache.log4j.LogManager.resetConfiguration();
org.apache.log4j.LogManager.getRootLogger().addAppender(new NullAppender());

如果您仍想要记录但指向文件,则可以执行以下操作:

LogManager.resetConfiguration();
LogManager.getRootLogger().addAppender(new FileAppender(new PatternLayout(), "log.log"));