java日志统一集成的两种方案

slf4j架构
Log4j日志集成
Logback日志集成
总结

分享的目的

一次性的解决应用中日志遇到的各种问题,包括:消除应用启动过程中与日志系统相关的无用错误提示,日志打印不出来的问题等;

Slf4j架构

  1. SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志System,通俗的讲,slf4j提供了目前Java日志系统的适配器;
  2. SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类,有点类似于JDBC,在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统(SPI)。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

Log4j日志集成

公共的Maven依赖

<dependency>
         <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
         <version>${slf4j.verson}</version>
</dependency>
<!-- 适配log4j -->
<dependency>
        <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>${slf4j.verson}</version>
</dependency>
<!-- 适配jcl(Jakarta Commons Logging ) -->
<dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
       <version>${slf4j.verson}</version>
</dependency>
<!-- 适配jul java.util.logging -->
<dependency>
      <groupId>org.slf4j</groupId>
     <artifactId>jul-to-slf4j</artifactId>
     <version>${slf4j.verson}</version>
</dependency>

log4j依赖

<dependency>
          <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.verson}</version>
</dependency>

排除的依赖

<exclusion>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-core</artifactId>
<exclusion>

<exclusion>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
<exclusion>

<exclusion>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-access</artifactId>
<exclusion>

<exclusion>
       <groupId>org.logback-extensions</groupId>
    <artifactId>logback-ext-spring</artifactId>
<exclusion>

<exclusion>
    <groupId>commons-logging</groupId>
     <artifactId>commons-logging</artifactId>
</exclusion>

Logback日志集成

公共的Maven依赖

<dependency>
         <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
         <version>${slf4j.verson}</version>
</dependency>
<!-- 适配log4j -->
<dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>log4j-over-slf4j</artifactId>
       <version>${slf4j.verson}</version>
</dependency>
<!-- 适配jcl(Jakarta Commons Logging ) -->
<dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
       <version>${slf4j.verson}</version>
</dependency>
<!-- 适配jul java.util.logging -->
<dependency>
      <groupId>org.slf4j</groupId>
     <artifactId>jul-to-slf4j</artifactId>
     <version>${slf4j.verson}</version>
</dependency>
<dependency>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-core</artifactId>
         <version>${logback.version}</version>
</dependency>
<dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
</dependency>
<dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-access</artifactId>
           <version>${logback.version}</version>
</dependency>
<dependency>
     <groupId>org.logback-extensions</groupId>
     <artifactId>logback-ext-spring</artifactId>
     <version>0.1.2</version>
</dependency>

Logback依赖

<dependency>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-core</artifactId>
         <version>${logback.version}</version>
</dependency>
<dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
</dependency>
<dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-access</artifactId>
           <version>${logback.version}</version>
</dependency>
<dependency>
     <groupId>org.logback-extensions</groupId>
     <artifactId>logback-ext-spring</artifactId>
     <version>0.1.2</version>
</dependency>

排除的依赖

<exclusion>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
</exclusion>
<exclusion>
    <groupId>commons-logging</groupId>
     <artifactId>commons-logging</artifactId>
</exclusion>

总结

  1. 当然大家在对自己的应用进行了相应的日志方案集成之后,最好也要在web.xml中配置日志的初始化的listener;
  2. 如果大家按照上面的方案对自己应用的日志系统进行了改造,你会发现,在应用启动的过程中,再也不会出现与日志系统本身集成相关的错误,更不会出现日志打不出来的现象,整个应用中日志打印出来是非常的干净;
  3. 当然统一日志集成不仅只有log4j和logback方案,还有其它方案,其它方案详见slf4j官方网站,地址链接是:https://www.slf4j.org/
  4. 因为logback日志比log4j更新,写日志的效率更高,更友好、更稳定,建议大家有时间统一把自己的应用日志系统切换到logback,log4j日志转换到logback 日志也是非常方便的,只需要按上面的要求替换相关的maven依赖,然后用logback官方的转换工具把log4j.propertiea配置文件转换成logback.xml的配置文件,如果是log4j.xml文件,转换到logback.xml更容易,只需要替换相关的appender即可,地址:https://logback.qos.ch/translator/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值