理清java各种日志框架之间的关系,Slf4j,Log4j2等相互间转换关系

理清java各种日志框架之间的关系,Slf4j,Log4j2等相互间转换关系,第1张

理清java各种日志框架之间的关系,Slf4j,Log4j2等相互间转换关系

本文仅仅是理清各种日志框架之间的关系和相互间转换关系,顺带附上springboot默认的Slf4j+Logback配置。具体各框架项目中如何使用,网上太多了,也写得更好。

1. 常用日志组件

java开发常用的日志组件有JCL 、 JUL、  SLF4j、Log4j、  Log4j2 、 Logback、 jboss-loggin(不面对大众,不考虑) 等,一般日志是配套出现的,一般是由  一个日志门面(设计有点像JDBC) 和 一个日志实现 配套使用,也有一些可单独使用。那么 组成以下结构:

序号日志门面(类似JDBC)日志门面配合日志实现的桥接包日志实现所属企业备注1Slf4j logback-classic.jarLogbackqos不可单独使用。2slf4j-jdk14.jarJul (Java Util Logging)java官方可单独使用,太简单一般不用。3slf4j-jcl.jarJCL(Jakarta Commons Logging)Apache 可单独使用4slf4j-log4j12.jarLog4jApache 可单独使用5log4j-slf4j-impl.jarLog4j2Apache 可单独使用。不是log4j的升级,不兼容log4j。

注1:桥接包 就是 日志门面 配套 日志实现 使用时所需要的中间包,日志实现 并没有实现Slf4j接口,所以需要中间包桥接。

注2:目前流行常用的是Slf4j+Logback, Slf4j+Log4j2, Log4j2。

注3:Slf4j没有具体实现不可单独使用,默认自带Logback配合使用(同一作者)。Jul ,JCL,Log4j,Log4j2可单独使用。JCL还可以配套Log4j使用。

2. 日志框架换新(重定向)

在旧项目基础上使用Slf4j日志框架,或者整合第三方项目时需要兼容Slf4j日志框架,不需要修改之前的日志代码,只需加入一个迁移包即可,比如,旧的项目用的是Log4j,现在用Slf4j+Logback。

或者新的日志框架使用Log4j2,也有相应的迁移包。

迁移包如下:

序号迁移方向迁移包1从Jul 迁移至 Slf4jjul-to-slf4j.jar2从JCL 迁移至 Slf4jjcl-over-slf4j.jar3从Log4j 迁移至 Slf4jlog4j-over-slf4j.jar4从Log4j2 迁移至 Slf4jlog4j-to-slf4j.jar6从Jul 迁移至 Log4j2 log4j-jul.jar7从JCL 迁移至 Log4j2 log4j-jcl.jar8从Log4j 迁移至 Log4j2log4j-1.2-api.jar 3.实战栗子:springboot

 springboot自带的日志框架spring-boot-starter-logging,带入了三种日志框架jul,log4j2,logback,默认使用的是Slf4j+Logback, 需要把log4j2和jul两个框架重定向至Slf4j+Logback,所以同时引入了log4j-to-slf4j和jul-to-slf4j。

4. logback-spring.xml配置

springboot默认使用Slf4j+Logback的组合,以下贴出logback-spring.xml的配置,以供参考。

注:logback-spring.xml一般放在/resources或者/resources/config目录下,如果放在其他路径需要在application.yml文件中配置:

logging:
  config: classpath:/logging/logback-spring.xml

logback-spring.xml配置如下:



    
    
    
    

    
    
        
            ${LOG_PATTERN}
        
    

    
    
        
            UTF-8
            ${LOG_PATTERN}
        
        
            ${LOG_HOME}/info.%d{yyyy-MM-dd}.%i.log.zip
            365
            10GB
            
                100MB
            
        
    

    
    
        
            ERROR
        
        
            UTF-8
            ${LOG_PATTERN}
        
        
            ${LOG_HOME}/error.%d.log
            365
            1GB
        
    

    
    
        
        
        
    


5. 日志输出路径说明

日志输出路径配置了 ,然而在本地IDEA启动和部署到服务器上,实际输出的路径如下:

启动方式实际输出路径本地IDEA启动(IDEA安装在哪个盘就在哪个盘符下,我的在D盘)D:/var/logs/{name}部署到服务器上/var/logs/{name}

还有var/logs和../var/logs的写法,具体对比参照logback-spring.xml中三种相对路径生成的日志文件的位置_yancie_的博客-CSDN博客_logback.xml 相对路径

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5671961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存