slf4j日志文件在哪里保存? [英] Where does the slf4j log file get saved?
问题描述
我有以下导入:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
以及以下实例:
private static Logger logger = LoggerFactory.getLogger(Test.class);
以及我的Main方法中的以下内容:
logger.info(SOME MESSAGE:);
但是,我无法在任何地方找到输出。我只看到在我的控制台中有:
21:21:24.235 [main] INFO some_folder.Test - SOME MESSAGE :
如何找到日志文件?
请注意,以下内容位于我的构建路径中:
slf4j-api-1.7.5.jar
slf4j-log4j12-1.6.4.jar
<我读了类似问题的答案,但没有人真正说明如何解决这个问题。
slf4j只是一个API。您应该有一个具体的实现(例如log4j)。这个具体实现有一个配置文件,告诉你存储日志的位置。
当slf4j使用记录器捕获日志消息时,会将其提供给appender,该appender决定如何处理消息。默认情况下,ConsoleAppender在控制台中显示消息。
默认配置文件为:
<?xml version =1.0encoding =UTF-8?>
<配置状态=警告>
< Appenders>
<! - 默认情况下=>控制台 - >
< Console name =Consoletarget =SYSTEM_OUT>
< PatternLayout pattern =%d {HH:mm:ss.SSS} [%t]%-5level%logger {36} - %msg%n/>
< / Console>
< / Appenders>
< Loggers>
< Root level =error>
< AppenderRef ref =控制台/>
< / Root>
< / Loggers>
< /配置>
如果您在类路径中提供配置文件,那么您的具体实现(在您的情况下,log4j) )会找到并使用它。请参阅 Log4J文档。
文件追加器的示例:
< Appenders>
<文件名=文件fileName =$ {filename}>
< PatternLayout>
< pattern>%d%p%C {1。} [%t]%m%n< / pattern>
< / PatternLayout>
< / File>
...
< / Appenders>
文件追加器的完整示例:
<?xml version =1.0encoding =UTF-8?>
<配置状态=警告>
< Appenders>
<文件名=文件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>
I have the followed imports:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
and the following instantiation:
private static Logger logger = LoggerFactory.getLogger(Test.class);
and the following in my Main method:
logger.info("SOME MESSAGE: ");
However, I'm not able to find the output anywhere. All I see is that in my console there is:
21:21:24.235 [main] INFO some_folder.Test - SOME MESSAGE:
How do I locate the log file?
Note that the following are on my build path:
slf4j-api-1.7.5.jar
slf4j-log4j12-1.6.4.jar
I read the answer to similar questions but nobody actually says how to fix the problem.
slf4j is only an API. You should have a concrete implementation (for example log4j). This concrete implementation has a config file which tells you where to store the logs.
When slf4j catches a log messages with a logger, it is given to an appender which decides what to do with the message. By default, the ConsoleAppender displays the message in the console.
The default configuration file is :
<?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>
If you put a configuration file available in the classpath, then your concrete implementation (in your case, log4j) will find and use it. See Log4J documentation.
Example of file appender :
<Appenders>
<File name="File" fileName="${filename}">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
...
</Appenders>
Complete example with a file appender :
<?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>
这篇关于slf4j日志文件在哪里保存?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!