Java Logger 使用总结

本文总结了Java日志框架的使用,包括Logback取代Log4j的原因,Log4j2的高性能特性,Spring Boot中日志的配置,以及如何将Logback日志发送到logstash。同时介绍了Log4j和Log4j2的配置与使用,强调了SLF4J作为日志抽象层的重要性,并遵循阿里巴巴Java开发手册建议,在应用中使用SLF4J API。
摘要由CSDN通过智能技术生成

Java Logger 使用总结

  • logger 背景知识

    • logback取代 log4j的理由: http://www.cnblogs.com/lixuwu/p/5804793.html
    • logback、log4j、log4j2三种日志框架性能检测——为什么用log4j2 : https://blog.csdn.net/qq_32250495/article/details/82382052
    • Log4j2的性能为什么这么好?:https://mp.weixin.qq.com/s/ZOkKxYAmRy950lsUcf9RuA
  • Spring Boot 日志

    • Spring Boot 默认使用Logback作为日志记录工具。日志默认输出到控制台但也能输出到文件中。我们通过spring-boot-starter-logging 加入Logback依赖,其实只要我们加入任意的Spring Boot starter 都会默认引入spring-boot-starter-logging,因此 我们不需要分开加入他们

    • 我们可以在application.properties或者application.yml中设置日志的级别、输出的文件名、输出路径、定义console, file 中logging的样式等。

      logging.level.root= WARN
      logging.level.org.springframework.security= DEBUG
      logging.level.org.springframework.web= ERROR
      logging.level.org.hibernate= DEBUG
      
      logging.file = mylogfile.log 
      
      logging.path = concretepage/logs  
      
      logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
      logging.pattern.file= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
      
    • 如果想使用XML配置Logback,则需要在 resources 路径下创建 logback-spring.xml文件,如果Spring Boot使用了Log4j2 ,则需要创建 log4j2-spring.xml 。

    • Spring Boot 想使用Log4j2 ,则需要修改 Maven 依赖

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
         <!--使用下面这个和上面排除spring-boot-starter-logging是一样的效果-->
         <exclusions>
            <exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <!-- log4j2日志 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-log4j2</artifactId>
      </dependency>
      
    • 使用 logstash-logback-encoder jar 包, 将 logback 日志传给 logstash

      <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>4.11</version>
      </dependency>
      
          <!-- logstash -->
          <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
              <destination>logstash.rongziidc.com:5046</destination>
              <!-- encoder is required -->
              <encoder class="net.logstash.logback.encoder.LogstashEncoder" >
                  <customFields>{"project":"com.rongziidc.creditorv2","type":"javaLog"}</customFields>
                  <timeZone>UTC+8</timeZone>
                  <timestampPattern>yyyy-MM-dd HH:mm:ss.SSS</timestampPattern>
              </encoder>
              <connectionStrategy>
                  <roundRobin>
                      <connectionTTL>5 minutes</connectionTTL>
                  </roundRobin>
              </connectionStrategy>
          </appender>
      
    • logback中动态获取application中配置项 :

      <springProperty scope="context" name="LOG_HOME" source="logback.file"/>
      
  • log4j 的使用

    • 添加 Maven依赖 , 最新上传 2012年5月

      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
      
    • 配置log4j , log4j.xml 配置详解

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
      <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
          <!-- 日志输出到控制台 -->
          <appender name="console" class="org.apache.log4j.ConsoleAppender">
              <!-- 日志输出格式 -->
              <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
              </layout>
              <!--过滤器设置输出的级别-->
              <filter class="org.apache.log4j.varia.LevelRangeFilter">
                  <!-- 设置日志输出的最小级别 -->
                  <param name="levelMin" value="INFO"/>
                  <!-- 设置日志输出的最大级别 -->
                  <param name="levelMax" value="ERROR"/>
              </filter>
          </appender>
      
          <!-- 输出日志到文件 -->
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值