Springboot2整合日志

1.依赖


   org.springframework.boot
   spring-boot-starter-parent
   2.0.3.RELEASE

   
      org.springframework.boot
      spring-boot-starter
   

   
      org.springframework.boot
      spring-boot-starter-test
      test
   
   
      org.springframework.boot
      spring-boot-starter-web
   

2.项目结构

Springboot2整合日志_第1张图片

注意:logback-spring.bak是我备份的,如果要使用需要改成logback-spring.xml

3.logback-spring.xml配置

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




scan="true" scanPeriod="10 seconds">

    

    logback
    
    name="log.path" value="C:/mylog/nnlog" />

    
    
    conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    
    name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>


    
    name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        
        class="ch.qos.logback.classic.filter.ThresholdFilter">
            INFO
        
        
            ${CONSOLE_LOG_PATTERN}
            
            UTF-8
        
    


    

    
    name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        ${log.path}/log_debug.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            ${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                100MB
            
            
            15
        
        
        class="ch.qos.logback.classic.filter.LevelFilter">
            debug
            ACCEPT
            DENY
        
    

    
    name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        ${log.path}/log_info.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
        
        class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            ${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                100MB
            
            
            15
        
        
        class="ch.qos.logback.classic.filter.LevelFilter">
            info
            ACCEPT
            DENY
        
    

    
    name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        ${log.path}/log_warn.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            ${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                100MB
            
            
            15
        
        
        class="ch.qos.logback.classic.filter.LevelFilter">
            warn
            ACCEPT
            DENY
        
    


    
    name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        ${log.path}/log_error.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            ${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                100MB
            
            
            15
        
        
        class="ch.qos.logback.classic.filter.LevelFilter">
            ERROR
            ACCEPT
            DENY
        
    

    
    
    
    


    

    
    name="dev">
        name="com.nmys.view" level="debug"/>
    

    level="info">
        ref="CONSOLE" />
        ref="DEBUG_FILE" />
        ref="INFO_FILE" />
        ref="WARN_FILE" />
        ref="ERROR_FILE" />
    

    
    
    
    
    
    
    
    
    
    


4.application.properties配置

#日志配置,输出到文本,
logging.config=classpath:logback-spring.xml
logging.path=C:/mylog/nnlog
#logging.level.com.mooc.springbootlogback=trace
#idea控制台默认日志级别修改
debug=true
# 指定输出日志的文件名,默认输出至当前项目目录下
logging.file=springboot.log
#server端口配置
server.port=8088

注意:

a/如果使用xml的配置优先级高于application.properties中的配置,如果在classpath:下配置了logback-spring.xml文件,即使application中不配置,也会默认扫描。所以会和手动配置的logging.level冲突。

b/xml中也配置了控制台的的日志级别,优先级高于application.properties中的debug=true配置

c/xml配置是采用分日志文件,按天取输出日志。、

d/logging.level.*=trace 是按包进行分级配置。

5,controller如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/log")
public class LoggingController {
    Logger logger = LoggerFactory.getLogger(getClass());

    @GetMapping("/logging")
    public String  showLogger(){
        // 级别由低到高 trace        logger.trace("这是一个trace日志");
        logger.debug("这是一个debug日志");
        logger.info("这是一个info日志");
        logger.warn("这是一个warn日志");
        logger.error("这是一个error日志");
        return "success!";
    }
}
Log4J有三个主要部件,它们是记录器(Loggers)、输出源(Appenders)和布局(Logouts)。记录器按照布局中指定的格式把日志信息写入一个或多个输出源。输出源可以是控制台、文本文件、XML文件或Socket,甚至还可以把信息写入到Windows事件日志或通过电子邮件发送,这都需要相应的类来处理,这些相关的类是ConsoleAppender、FileAppender、SocketAppender、NtEventLogAppender和JMSAppender。
记录器(Logger)
首先让我们看Logger类,代码如下:

package org.apache.log4j;

public class Logger {
//创建和恢复方法
public static Logger getRootLogger();
public static Logger getLogger(String name);
public static Logger getLogger(Class clazz);
// 打印方法
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);
// 常用打印方法
public void log(Level l, Object message);

}

详细原理:参考http://blog.sina.com.cn/s/blog_77e26b1e0101dypz.html

你可能感兴趣的:(logback)