slf4j简介
即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
Spring中slf4j的使用
所需依赖jar:
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
配置文件为固定写法log4j.properties
#console, file自定义 附加器 Spring自动去查找此配置文件 名字不能随便写
log4j.rootLogger=INFO, console, file
#console输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n
#file让日志生成文件到指定位置、如某个盘,系统目录下等等
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n
级别
log4j定义了8个级别:优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。
ALL 最低等级的,用于打开所有日志记录,很低的日志级别,一般不会使用,OFF 最高等级的,用于关闭所有日志记录,一般不会使用。
测试使用、org.slf4j.Logger包别导错
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyTest {
//Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG,并且,log4j默认的优先级为ERROR。
private static final Logger logger = LoggerFactory.getLogger(MyTest.class); //知道哪个类报异常,跟踪日志 MyTest.class)
public static void main(String[] args) {
//优先级从高到低最常用的四种级别:ERROR、WARN、INFO、DEBUG
logger.error("error 级别日志");
logger.warn("warn 级别日志");
logger.info("INFO 级别日志");
logger.debug("debug 级别日志");
}
}
正确的打印字符串方式
public static void main(String[] args) {
String message1 = "测试";
String message2 = "测试1";
logger.info("message is:"+message1); //增加了系统开销
logger.info("message is: {},{}",message1,message2); //优化,正确的输出方式
//在我们打印测试信息的时候,另外也可以这样写,java向控制台输出
System.out.println(String.format("message is: %s,%s",message1,message2)); //String.format字符相串格式化
}
输出结果:
2020-05-10 17:17:57,246 INFO [com.funtl.hello.spring.MyTest] - message is:测试
2020-05-10 17:17:57,248 INFO [com.funtl.hello.spring.MyTest] - message is: 测试,测试1
message is: 测试,测试1