问题描述
我有一个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("首次初始化DB连接");
此日志消息写在我在属性文件中指定的文件中,但也将其附加在命令行中.如何禁用这种行为?我希望消息仅在文件中打印,而不是在命令行中.
有什么想法?
推荐答案
我发现这完全禁用了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"));
问题描述
I have a maven project with the following dependencies for logging:
<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>
My properties file looks like this :
### 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
The problem is that when I execute a statement like the following :
logger.info("Initializing DB connection for the first time");
This log message is written in the file that I specified in the properties file but it is also appended in the command line. How can I disable this behavior ? I want the message to printed only in the file , not in the command line .
Any ideas ?
推荐答案
I found out that this disables the log4j completely:
org.apache.log4j.LogManager.resetConfiguration(); org.apache.log4j.LogManager.getRootLogger().addAppender(new NullAppender());
If you still want the logging but directed to a file you can do this:
LogManager.resetConfiguration(); LogManager.getRootLogger().addAppender(new FileAppender(new PatternLayout(), "log.log"));