Java的日志框架种类很多,为了解决团队中可以任意切换底层日志框架的问题,产生了slf4j,它只是定义了一套接口,没有具体实现。使用它的api来编程,底层实现可以切换到任意的其他日志框架。
1.首先引入slf4j-api
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
然后创建logger
Logger logger = LoggerFactory.getLogger("mylogger");
logger.info("hello");
logger.debug("debug");
2.然后如果我们想用log4j这个日志框架,就引入slf4j-log4j12这个中间层,它实现了slf4j定义的接口,能把slf4j的调用偷偷切换成调用log4j12
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
3.引入log4j的具体实现
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
//使用log4j框要在resources目录下配置log4j.properties文件
//可以指定输出级别和输出地址,具体配置如下
### 设置输出级别 ###
log4j.rootLogger = debug,stdout,D
### 输出信息到控制抬 ###
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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出INFO 级别以上的日志到指定地点 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/test.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss}] - [%t] - [%p] %m%n
image.png
[注] 也可以使用其他日志框架,如
//使用自带的Jdk原生日志框架,无需再引入具体实现
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.13</version>
</dependency>
image.png
网友评论