springboot统一日志处理
发布日期:2021-05-14 09:42:19 浏览次数:16 分类:精选文章

本文共 3847 字,大约阅读时间需要 12 分钟。

Spring Boot统一日志处理指南

统一日志处理能够将控制台打印的日志存储到log文件中,并将其分为info、warn、error三个文件。这一机制有助于快速定位系统运行时的问题。


1. 配置logback日志

删除现有配置

确保项目中没有现有的日志配置文件,特别是application.properties中的日志相关设置。

安装日志插件

安装IDEA的grep-console插件,以便在开发环境下更直观地查看日志输出。

创建logback配置文件

resources目录下创建logback-spring.xml文件,按照以下内容进行配置:

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
warn
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

2. 集成异常处理

修改GlobalExceptionHandler.java

在全局异常处理类上添加@Slf4j注解,并修改异常输出语句:

// 替换原有的e.printStackTrace();log.error("异常信息:{}", e.getMessage());

获取完整代码

请参考项目中GlobalExceptionHandler.java的实现,确保所有异常信息都能通过日志渠道记录。


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);            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("异常信息:{}", ExceptionUtil.getMessage(e));

完善GuliException类

确保GuliException类中包含toString()方法:

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

总结

通过以上配置和实现,可以实现统一日志处理,将日志按级别存储到相应的文件中。结合统一异常处理机制,系统将更容易定位运行时问题。

上一篇:Node.js入门
下一篇:springboot统一异常处理

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年04月14日 00时35分11秒