use*_*361 54 java logging slf4j bin output
我有跟随进口:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Run Code Online (Sandbox Code Playgroud)
以及以下实例:
private static Logger logger = LoggerFactory.getLogger(Test.class);
Run Code Online (Sandbox Code Playgroud)
以及我的Main方法中的以下内容:
logger.info("SOME MESSAGE: ");
Run Code Online (Sandbox Code Playgroud)
但是,我无法在任何地方找到输出.我只看到在我的控制台中有:
21:21:24.235 [main] INFO some_folder.Test - SOME MESSAGE:
Run Code Online (Sandbox Code Playgroud)
如何找到日志文件?
请注意,以下内容位于我的构建路径中:
slf4j-api-1.7.5.jar
slf4j-log4j12-1.6.4.jar
我读了类似问题的答案,但没有人真正说明如何解决问题.
Arn*_*lle 47
slf4j只是一个API.您应该有一个具体的实现(例如log4j).这个具体实现有一个配置文件,告诉你存储日志的位置.
当slf4j使用记录器捕获日志消息时,它将被提供给一个appender,它决定如何处理该消息.默认情况下,ConsoleAppender在控制台中显示消息.
默认配置文件是:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- By default => console -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
如果您在类路径中放置了一个配置文件,那么您的具体实现(在您的情况下,log4j)将找到并使用它.请参阅Log4J文档.
文件追加器的示例:
<Appenders>
<File name="File" fileName="${filename}">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
...
</Appenders>
Run Code Online (Sandbox Code Playgroud)
带文件追加器的完整示例:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="File" fileName="${filename}">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
Jay*_*Jay 32
如前所述,它只是一个外观,它有助于轻松地在不同的记录器实现之间切换.例如,如果要使用log4j实现.
示例代码如下所示.
如果你使用maven获取依赖项
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在位置src/main/resources/log4j.properties中的log4j.properties中有以下内容
log4j.rootLogger=DEBUG, STDOUT, file
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=mylogs.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
下面的Hello world代码将按照上述配置在控制台和日志文件中打印.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
89754 次 |
最近记录: |