美文网首页
项目日志处理

项目日志处理

作者: c_gentle | 来源:发表于2020-09-08 16:27 被阅读0次
    统一日志处理.png

    一、日志

    1、配置日志级别
    日志记录器(Logger)的行为是分等级的。如下表所示:
    分为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
    默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别

    # 设置日志级别
    logging.level.root=WARN
    

    这种方式只能将日志打印在控制台上

    二、Logback日志

    spring boot内部使用Logback作为日志实现的框架。
    Logback和log4j非常相似,如果你对log4j很熟悉,那对logback很快就会得心应手。
    logback相对于log4j的一些优点:https://blog.csdn.net/caisini_vc/article/details/48551287
    1、配置logback日志
    删除application.properties中的日志配置
    resources 中创建 logback-spring.xml

    此属性,那么当前logger将会继承上级的级别。
        -->
        <!--
            使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
            第一种把<root level="INFO">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
            第二种就是单独给mapper下目录配置DEBUG模式,代码如下,这样配置sql语句会打印,其他还是正常DEBUG级别:
         -->
        <!--开发环境:打印控制台-->
        <springProfile name="dev">
            <!--可以输出项目中的debug日志,包括mybatis的sql日志-->
            <logger name="com.guli" level="INFO" />
    
            <!--
                root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
                level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG
                可以包含零个或多个appender元素。
            -->
            <root level="INFO">
                <appender-ref ref="CONSOLE" />
                <appender-ref ref="INFO_FILE" />
                <appender-ref ref="WARN_FILE" />
                <appender-ref ref="ERROR_FILE" />
            </root>
        </springProfile>
    
    
        <!--生产环境:输出到文件-->
        <springProfile name="pro">
    
            <root level="INFO">
                <appender-ref ref="CONSOLE" />
                <appender-ref ref="DEBUG_FILE" />
                <appender-ref ref="INFO_FILE" />
                <appender-ref ref="ERROR_FILE" />
                <appender-ref ref="WARN_FILE" />
            </root>
        </springProfile>
    
    </configuration>
    

    2、将错误日志输出到文件
    GlobalExceptionHandler.java 中
    类上添加注解

     @Slf4j
    

    异常输出语句

     log.error(e.getMessage());
    

    3、将日志堆栈信息输出到文件
    定义工具类
    guli-framework-common下创建util包,创建ExceptionUtil.java工具类

    package com.caiweiwei.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();
        }
    }
    

    调用

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

    GuliException中创建toString方法

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

    相关文章

      网友评论

          本文标题:项目日志处理

          本文链接:https://www.haomeiwen.com/subject/necjektx.html