一直以来对java中的日志框架比较模糊,现在特意来总结一下啦!!!!
常用的日志组件:
名称 | jar | 描述 |
log4j | log4j-1.2.17.jar | 早期常用日志框架 |
logback | logback-core、logback-classic、logback-access |
一套日志组件的实现,性能优于log4j(slf4j阵营) |
log4j2 | log4j、log4j-api、log4j-core | apache开发的一款Log4j的升级产品 |
java.util.logging | jdk | Java1.4以来的官方日志实现,无需第三方依赖 |
提问:
如果让你开发一个类似spring框架,你会采用哪个组件?
发现哪个都不能选,只能基于应用实际使用的日志组件来。不然就会日志打印多份。怎么找到应用实际使用的日志组件 JCL(Apache Commons Loging)解决了这个问题。
<!--这个是jcl包--> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <!--当加入了log4j包时,就会用log4j打印--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
log4j.properties 文件内容
log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%p] [%c] - %m%n log4j.rootCategory=debug,console
SLF4j:全称Simple Logging Facade for Java(简单日志门面),与jcl类似,本身不提供日志具体实现,只对外提供接口或者门面。与commons loging不同的是其采用在classPath
加入桥接jar包来表示具体采用哪种实现。
maven中slf4j使用
1、pom.xml中引用
<!-- log --> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> <!-- <scope>test</scope> --> </dependency>
2.日志配置log4j.properties
log4j.rootLogger=debug,CONSOLE,FILE log4j.addivity.org.apache=true # 应用于控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=INFO log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.Encoding=UTF-8 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n # 每天新建日志 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=D:/log4j/log log4j.appender.A1.Encoding=UTF-8 log4j.appender.A1.Threshold=DEBUG log4j.appender.A1.DatePattern='.'yyyy-MM-dd log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n #应用于文件 log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=E:/log4j/file.log log4j.appender.FILE.Append=false log4j.appender.FILE.Encoding=UTF-8 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n