美文网首页
项目日志处理

项目日志处理

作者: 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 +
        '}';
}

相关文章

  • 无标题文章

    Java日志处理问题? Java中日志处理,用了druid和log4j处理日志,druid对项目进行监控,通过lo...

  • 项目日志处理

    一、日志 1、配置日志级别日志记录器(Logger)的行为是分等级的。如下表所示:分为:OFF、FATAL、ERR...

  • SpringBoot + Aop应用

    今天对项目的日志进行重构,采用Aop对日志进行统一处理,日志采用Slf4j+logback框架 spring ao...

  • Graylog收集多行日志(Java Error Log)

    前言 最近根据项目需求要使用graylog收集Java异常日志,这个任务的难点在于要处理多行日志(Multilin...

  • docker的日志参数详解管理

    docker提供了logs命令来对日志进行处理 -f 对你的项目进行log监听,所有log日志实时输出 -t 提供...

  • 2019-04-14

    项目中使用logback框架进行日志处理,logback.xml配置文件中出现配置日志文件的基准目录,如下截图: ...

  • 26 Pandas处理分析网站原始访问日志

    26 Pandas处理分析网站原始访问日志 目标:真实项目的实战,探索Pandas的数据处理与分析 实例:数据来源...

  • NO.92 Spring AOP

    项目中如何在不修改核心业务的前提下植入新功能? 例如: 1)事务处理 2)日志处理 3)缓存处理 4)权限处理 5...

  • SpringBoot日志处理之Logback

    日志处理是一个正式项目必备的功能,日志要能够根据时间、类型等要素,根据指定格式来保存指定的日志,方便我们观察程序运...

  • [实践]日志级别说明及实践

    项目中根据不同的情况使用不同的日志等级,便于管理和配置对应的日志报警通知进行处理. emergency: 系统不可...

网友评论

      本文标题:项目日志处理

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