logback之使用demo

增加maven配置

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.5</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-core</artifactId>
  <version>1.1.0</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.1.0</version>
</dependency>

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="30 minutes">
    <property name="logDir" value="D:/logs" />

    <!-- 打印到控制台 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="debuglog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/debug/%d{yyyy-MM-dd}.log.zip
            </fileNamePattern>
            <!-- 限制文件最大保存时间为15天; 15*24=360 -->
            <maxHistory>360</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 当文件大小超过60M时触发滚动,这里设置60M -->
                <maxFileSize>60MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="infolog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/info/%d{yyyy-MM-dd}.log.zip
            </fileNamePattern>
            <!-- 限制文件最大保存时间为15天; 15*24=360 -->
            <maxHistory>360</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 当文件大小超过60M时触发滚动,这里设置60M -->
                <maxFileSize>60MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="errorlog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/error/%d{yyyy-MM-dd}.log.zip
            </fileNamePattern>
            <!-- 限制文件最大保存时间为15天; 15*24=360 -->
            <maxHistory>360</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 当文件大小超过60M时触发滚动,这里设置60M -->
                <maxFileSize>60MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level-%logger{5} - %msg%n</pattern>
        </encoder>
    </appender>


    <!-- 异步日志配置 -->
    <appender name="infolog_async" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>5000</discardingThreshold>
        <queueSize>50000</queueSize>
        <appender-ref ref="infolog" />
    </appender>

    <appender name="errorlog_async" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>5000</discardingThreshold>
        <queueSize>50000</queueSize>
        <appender-ref ref="errorlog" />
    </appender>


    <root level="debug">
        <appender-ref ref="stdout" />
        <appender-ref ref="debuglog" />
        <appender-ref ref="infolog_async" />
        <appender-ref ref="errorlog_async" />
    </root>

</configuration>
package com.zns;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test1 {
   private static final Logger logger = LoggerFactory.getLogger(Test1.class);

   public static void main(String[] args) {
      logger.debug("hello world");
      logger.info("hello world");
      logger.error("hello world");
   }
}

猜你喜欢

转载自www.cnblogs.com/zengnansheng/p/10389829.html