springboot统一日志处理

springboot统一日志处理

统一日志处理能够获取控制台中打印出来的日志,将其存储在log文件中,log文件拆分成三个文件:1、info;2、warn;3、error。这样子拆分能够有利我们能够快速排查问题。

1、配置logback日志

删除application.properties中的日志配置
安装idea彩色日志插件:grep-console
resources 中创建 logback-spring.xml



    
    
    
    

    logback
    
    

    
    
    
    
    
    
    
    


    
    
        
        
        
            INFO
        
        
            ${CONSOLE_LOG_PATTERN}
            
            UTF-8
        
    


    

    
    
        
        ${log.path}/log_info.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8
        
        
        
            
            ${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            15
        
        
        
            INFO
            ACCEPT
            DENY
        
    

    
    
        
        ${log.path}/log_warn.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        
            ${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            15
        
        
        
            warn
            ACCEPT
            DENY
        
    


    
    
        
        ${log.path}/log_error.log
        
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
            UTF-8 
        
        
        
            ${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log
            
                100MB
            
            
            15
        
        
        
            ERROR
            ACCEPT
            DENY
        
    

    
    
    
    
        
        

        
        
            
            
            
            
        
    


    
    

        
        

        
            
            
        
    


在这一行代码中我们能够指定生成的log文件存放的路径。

2、将错误日志输出到文件

GlobalExceptionHandler.java 中
类上添加注解

@Slf4j

修改异常输出语句

 //e.printStackTrace();
log.error(e.getMessage());

3、将日志堆栈信息输出到文件

为了保证日志的堆栈信息能够被输出,我们需要定义工具类
guli-framework-common下创建util包,创建ExceptionUtil.java工具类

package com.guli.common.util;

public class ExceptionUtil {

	public static String getMessage(Exception e) {
		StringWriter sw = null;
		PrintWriter pw = null;
		try {
			sw = new StringWriter();
			pw = new PrintWriter(sw);
			// 将出错的栈信息输出到printWriter中
			e.printStackTrace(pw);
			pw.flush();
			sw.flush();
		} finally {
			if (sw != null) {
				try {
					sw.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
			if (pw != null) {
				pw.close();
			}
		}
		return sw.toString();
	}
}

修改异常输出语句

//e.printStackTrace();
//log.error(e.getMessage());
log.error(ExceptionUtil.getMessage(e));

GuliException中创建toString方法

@Override
public String toString() {
    return "GuliException{" +
        "message=" + this.getMessage() +
        ", code=" + code +
        '}';
}

总结

通过以上的配置我们就能够进行统一日志的处理了,结合统一异常处理,我们能够很快的定位系统运行时的情况。感谢你的阅读,希望能给你带来小小的帮助。我是黑马Jack,一起学习一起进步!

你可能感兴趣的:(Java,springboot,java,logback,spring,boot)