SLF4J 使用简记
使用 SLF4J有一段时间了,在此作上些许记录,以作提示。
本文使用的实际实现的日志框架是Log4j
,所以使用log4j.properties
文件
SLF4J 需要引入的jar包
- Maven
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependencies>
Maven 会连带引入以上包的依赖树以来的包,如下图所示
添加日志配置文件 log4j.properties
- log4j.properties 示例
### set log levels ###
log4j.rootLogger = debug , stdout , D , E
### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n
### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n
### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = /logs/error.log ## 异常日志文件名
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%l:%c:%t:%r] - [%p] %m%n
更多
Log4j
输出配置参数,参看: Apache Log4j PatternLayout
SLF4J
在 Java
类中使用的示例
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SLF4JUseCase {
final static Logger log = LoggerFactory.getLogger(SLF4JUseCase.class);
public static void main(String[] args) {
log.info("main 方法开始");
log.debug("信息");
try{
String currentClassPath = SLF4JUseCase.class.getResource("").getPath();
log.info("{} 是当前类所在的路径",currentClassPath);
}catch(Exception e){
log.error("路径获取错误。",e);
}
}
}
- 运行后输出如下:
2016-07-10 15:08:35:132 INFO SLF4JUseCase:main:9 - main 方法开始
2016-07-10 15:08:35:134 DEBUG SLF4JUseCase:main:10 - 信息
2016-07-10 15:08:35:136 INFO SLF4JUseCase:main:13 - /C:/Users/UserName/workspaces/Prictice/demo/target/classes/ 是当前类的路径