Spring logger 配置

1. logback-spring.xml 

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <!--輸出到控制檯-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>C:\gather-logs\crm-info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>C:\gather-logs\server-info-%d{yyyyMMdd}.log.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</Pattern>
        </layout>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <pattern>%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) |
                %msg%n
            </pattern>
        </encoder>

    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <File>C:\gather-logs\crm-error.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>C:\gather-logs\server-error-%d{yyyyMMdd}.log.%i
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n
            </Pattern>
        </layout>
    </appender>

    <!--    <logger name="com.example.demo1.controller" level="INFO">-->

    <!--    </logger>-->

    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="INFO_FILE"/>
        <appender-ref ref="ERROR_FILE"/>
    </root>


    <!-- TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF -->
    <logger name="org.springframework" level="DEBUG" additivity="true"/>


    <logger name="org.apache" level="OFF"/>
    <logger name="com.alibaba" level="OFF"/>
    <!-- 若是這裏設置了additivity=true 代碼打印信息向上傳遞,將打印信息傳遞到root ,而且本身的appender-ref 也會打印,這樣就是打印了倆第二天志-->
    <logger name="com.example.demo1" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

 (1) html

    <contextName>logback</contextName>
    <!-- name的值是變量的名稱,value的值時變量定義的值。經過定義的值會被插入到logger上下文中。定義後,能夠使「${}」來使用變量。 -->
    <property name="log.path" value="G:/logs/pmp" />

 (2)java

<configuration scan="true" scanPeriod="60 seconds" debug="false">

scan: 當此屬性設置爲true時,配置文檔若是發生改變,將會被從新加載,默認值爲true web

scanPeriod: 設置監測配置文檔是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。spring

debug: 當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。 

apache

    

2. 設置Logger 

 <logger name="com.example.demo1" level="INFO" additivity="true">
        <appender-ref ref="console"/>
 </logger>

  (1)logger 設置 level 時,則根據level 過濾日誌信息,若是沒有設置level ,則繼承root的level。app

  (2)logger 的additivity屬性,若是設置爲true,則會將日誌信息向上傳遞給root,同時也執行本身的<appender-ref> 這裏會出現打印2次的現象。ide

      以下:idea

   

package com.example.demo1.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class MyController {

    private static Logger logger= LoggerFactory.getLogger(MyController.class);

    @RequestMapping("/getOut")
    @ResponseBody
    public String getBody(){

        logger.info("-----------info");
        logger.debug("----------debug");
        logger.warn("-----------warn");
        logger.error("----------error");
        return "body";
    }
}

  

 3. appender  

 

    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>C:\gather-logs\crm-info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>C:\gather-logs\server-info-%d{yyyyMMdd}.log.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</Pattern>
        </layout>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <pattern>%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) |
                %msg%n
            </pattern>
        </encoder>

    </appender>

  (1)  日誌打印保存的路徑  spa

   <File>C:\gather-logs\crm-info.log</File>

  (2) 日誌文件的命名方式 若是: server-info-20190617.log.1   線程

<fileNamePattern>C:\gather-logs\server-info-%d{yyyyMMdd}.log.%i</fileNamePattern>

  (3) 日誌的最大設置爲5M ,若是大於5M ,則歸檔,建立文件如:  server-info-20190617.log.2

<maxFileSize>5MB</maxFileSize>

 (4)日誌的保存時間 2天 

  <maxHistory>2</maxHistory>

 (5)Logger 的輸入格式 eg: 

  

<layout class="ch.qos.logback.classic.PatternLayout">
     <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -%msg%n</Pattern>
</layout>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
     <pattern>%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n
     </pattern>
 </encoder>    

4. 配置log的dev prd環境

 <springProfile name="dev">
        <property name="log.path" value="/Users/guoxiwang/software/idea/log/dev" />
    </springProfile>
    <springProfile name="prd">
        <property name="log.path" value="/Users/guoxiwang/software/idea/log/prd" />
    </springProfile>

 

 <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文檔的路徑及文檔名 -->
        <file>${log.path}/web_debug.log</file>
        <!--日誌文檔輸出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 設置字符集 -->
        </encoder>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日誌歸檔 -->
            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日誌文檔保留天數-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日誌文檔只記錄debug級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
相關文章
相關標籤/搜索