一直以来对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

 

posted on 2019-05-07 11:37  风清_云淡  阅读(174)  评论(0编辑  收藏  举报