org.slf4j.Logger登录到控制台,如何登录到文件?

use*_*930 9 java logging log4j slf4j

我正在使用org.slf4j.Logger来记录输出.输出将进入控制台.如何将日志记录记录到日志文件中?

 private static final Logger LOG = LoggerFactory.getLogger(ClassName.class );
 LOG.info("Logging output to console");
Run Code Online (Sandbox Code Playgroud)

我没有使用log4j.properties文件.我假设我需要一个.

我添加了以下log4j.properties文件并将其放在我的eclipse项目的不同部分.

 # Define the file appender
 log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
 log4j.appender.FileAppender.File=logger.log
 log4j.appender.FileAppender.layout = org.apache.log4j.PatternLayout
 log4j.appender.FileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

 # Direct all messages there
 log4j.rootLogger = INFO, FileAppender
Run Code Online (Sandbox Code Playgroud)

我甚至用过

 PropertyConfigurator.configure("log4j.properties");
Run Code Online (Sandbox Code Playgroud)

但是没有出现记录文件.log4j.properties似乎没有效果.

Chr*_*tle 6

我认为,最简单的方法是FileAppender在 log4j.properties 文件中定义一个:

# Define the file appender
log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileAppender.File=[log filename].log
log4j.appender.FileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Direct all messages there
log4j.rootLogger = INFO, FileAppender
Run Code Online (Sandbox Code Playgroud)

只需[log filename]用一些相关的文件名替换即可。如果文件位于项目目录中,我认为 Log4j 能够在您从 Eclipse 运行项目时自动定位该文件,但我不是 100% 确定。您可以PropertyConfigurator在应用程序开始时使用来告诉 Log4j 在哪里可以找到属性文件,例如:

PropertyConfigurator.configure("log4j.properties");
Run Code Online (Sandbox Code Playgroud)