logback日志颜色调优、日志分离

logback是log4j作者推出的新日志系统,原生支持slf4j通用日志api,允许平滑切换日志系统,并且对简化应用部署中日志处理的工作做了有益的封装。
官方地址为:http://logback.qos.ch/
 下面对logback日志提供日志优化与日志分离技术的详细描述与干货分享~
首先logback日志需要依赖一下jar包:
<properties>
    <slf4j.version>1.7.21</slf4j.version>
    <logback.version>1.0.13</logback.version>
    <lombok.version>1.14.4</lombok.version>
</properties>
 
<!-- 日志文件管理包 -->
<!-- ==========================log start========================== -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>

    <artifactId>jul-to-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>${slf4j.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-core</artifactId>
    <version>${logback.version}</version>
</dependency>
<!-- ==========================log end========================== -->

主配置文件为logback.xml,放在src目录下或是WEB-INF/classes下,logback会自动加载

之前一直没调试过logback的输出格式,线上与测试环境日志一片雪白,有时晚上上线盯着日志看着那是头昏眼花,多的不说

直接上图

这个是调优前的日志输出


这个是调优后的日志输出


看起来是不是爽多了~

用不同的颜色着色不同的日志,既降低的视觉疲劳感,也提高了排查问题速度,看起来非常nice;通宵狗与强迫症的首选

废话不多说直接上干货!

下面是logback.xml文件的全部配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<!-- magenta:洋红 -->
<!-- boldMagenta:粗红-->
<!-- cyan:青色 -->
<!-- white:白色 -->
<!-- magenta:洋红 -->

  <property name="CONSOLE_LOG_PATTERN"
              value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>

    <property name="FILE_PATH"
              value="/root/sys/logs/member"/>

    <!--==================写入文件==================-->
    
    <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${FILE_PATH}/log/aurora-member.log</File>
        <encoder>
          <!--   <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> -->
           <pattern>${CONSOLE_LOG_PATTERN}</pattern>
          
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${FILE_PATH}/log/aurora-member-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>512MB</maxFileSize>
            </TimeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    <!--==================写入文件==================-->



    <!--==================异常日志==================-->
   <appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender">  
    <file>${FILE_PATH}/member-error/member-error.log</file>
        <!-- 只打印错误日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>  
        <onMatch>ACCEPT</onMatch>  
        <onMismatch>DENY</onMismatch>  
      </filter>  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
           <fileNamePattern>
            ${FILE_PATH}/member-error/member-error-%d{yyyy-MM-dd}.%i.log
       </fileNamePattern>
          <maxHistory>30</maxHistory>
         <TimeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>512MB</maxFileSize>
         </TimeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>  
    <encoder>  
        <pattern>${CONSOLE_LOG_PATTERN}</pattern>
    </encoder>  
   </appender>
    <!--==================异常日志==================-->


    <!--==================控制台==================-->
    
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--==================控制台==================-->
    
    <logger name="com.ibatis" level="INFO"/>
    <logger name="org.springframework" level="INFO"/>
    <logger name="java.sql.PreparedStatement" level="INFO"/>
    <logger name="org.springframework.web.servlet.DispatcherServlet" level="INFO"/>
    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="INFO"/>
    <logger name="java.sql" level="INFO"/>
    <logger name="org.apache.commons" level="INFO"/>
    <logger name="java.sql.Statement" level="INFO"/>
    <logger name="org.springframework.web.context.support.XmlWebApplicationContext" level="INFO"/>
    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="INFO"/>
    <logger name="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" level="INFO"/>
    <logger name="java.sql.ResultSet" level="INFO"/>
    <logger name="java.sql.Connection" level="INFO"/>
    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="INFO"/>
    <root level="DEBUG">
        <appender-ref ref="logfile"/>
        <appender-ref ref="stdout"/>
        <appender-ref ref="error_file" />
    </root>
</configuration>

此logback.xml文件既有成彩色输出也有日志级别的分类,不同级别的日志进行分类输出;error日志单独输出一份至一个文件夹中,设置滚动策略与info日志保持一致时间滚动策越+单个文件最大滚动策略,如果对日志滚动备份不太清楚的话可以去官网上看一看,上面有详细的说明文档;

logfile:输出与日志文件中
stdout:输出到控制台;本地调试时可以开启此输出;方便本地调试与排查问题(ps:)
ps:
<appender-ref ref="stdout"/>

这个部署线上环境时候切记要注释掉!

这个部署线上环境时候切记要注释掉!

这个部署线上环境时候切记要注释掉!

重要的事情说三遍;不然服务器炸了别怪我没提醒 ~.~

error_file:捕获异常日志,将error日志进行单独输出至error.log文件中,方便日常维护时快速查看系统是否出现异常
此处我将日志输出格式与输出目录单独定义成变量形式,以便统一样式,如果有特殊需求可以自行更改

当然

CONSOLE_LOG_PATTERN标签大家可以参照几种颜色自定义组合,截图上是我觉得看起来还不错的一种组合,如果觉得
颜色不够的话那我也没办法了,我去源码里面找的时候只找到了logback支持这几种颜色的代号,注释上已给出;如果各位彪悍,
可以自行挖掘其他颜色(0 . 0);我就不捣鼓了

使用方法简单,直接复制xml文件替换logback.xml文件,然后添加maven依赖即可。

纯手打;转载声明出处~



展开阅读全文

没有更多推荐了,返回首页