logback基础日志配置

目前项目搭建是使用的Spring mvc + hibernate(比较原始,boot后面会尝试)

1.引入日志包

   ch.qos.logback 为logback包

   org.logback-extensions 包用于集成Spring的包

<!-- log begin -->
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>${log.version}</version>
</dependency>
<dependency>
  <groupId>org.logback-extensions</groupId>
  <artifactId>logback-ext-spring</artifactId>
  <version>0.1.4</version>
</dependency>
<!-- log end -->

备注:网上一些博客有需要引入slf4j包,自己测试写入时没有引入也能使用


2.配置web.xml监听器(集成web项目,logback-config.xml 为指定的配置文件)

<!-- 配置日志logback-->
<!-- logback扩展,监听,用于解决与spring的结合 -->
<listener>
  <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>
<context-param>
  <param-name>logbackConfigLocation</param-name>
  <param-value>classpath:logback-config.xml</param-value>
</context-param>

3.配置文件(logback-config.xml)

        目前我配置了三种日志输出文件:

        1.file为文件输出,会记录所有日志

        2.error文件输出,记录异常日志(方便错误直接查找和错误监控) 日为单位输出

        3.info文件输出,记录info级别日志  日为单位输出

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

  <!-- 定义日志文件 输入位置 -->
  <property name="log_dir" value="/Users/LiRui/Desktop/wz/log/test"/>

  <!--时间转换格式-->
  <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
  <!--控制台输出-->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
  </appender>

  <!--滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件-->
  <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--配置过滤器,只拦截error信息-->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>ERROR</level>
    </filter>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
    <append>true</append>
    <!--最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动-->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!--每天生成一个日志文件,保存30天的日志文件。-->
      <fileNamePattern>${log_dir}/ky-error.%d{yyyy-MM-dd}.log
      </fileNamePattern>
      <!--可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。-->
      <maxHistory>60</maxHistory>
      <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- INFO级别日志 appender -->
  <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 过滤器,只记录INFO级别的日志 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>INFO</level>
    </filter>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
    <append>true</append>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 按天回滚 daily -->
      <fileNamePattern>${log_dir}/ky-info.%d{yyyy-MM-dd}.log
      </fileNamePattern>
      <!--可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。-->
      <maxHistory>60</maxHistory>
      <totalSizeCap>3GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${log_dir}/ky-all.log</file>
    <encoder>
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>

  <!--设置日志级别-->
  <root level="debug">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="INFO"/>
    <appender-ref ref="ERROR"/>
    <appender-ref ref="FILE"/>
  </root>
</configuration>

输出文件:

        



其他设置可参考博客:

        https://www.cnblogs.com/gslyyq/p/5256789.html

中文文档参考:

      http://aub.iteye.com/blog/1896611     

猜你喜欢

转载自blog.csdn.net/qq_28325291/article/details/80770102