美文网首页
java日志该如何输出

java日志该如何输出

作者: 时间道 | 来源:发表于2019-08-16 11:43 被阅读0次

日志要求:

  • 重要日志一定要打印到日志文件
  • 日志文件应该每天滚动一次,日志多的可以每个小时滚动一次
  • 日期必须精确到毫秒,而不是秒
  • 确保日志是按事件顺序输出
  • 【推荐】最好能打印调用方信息,比如访问者ip等信息
  • 日志文件要可以方便使用grep语句查看
  • 日志文件归档:需要告知运维归档
  • 日志预警,通过ES实现
  • 对于无法预知的异常,一定要打印堆栈:LOGGER.error("context:{},exception:{}", JSON.toJSONString(context), e);
  • 打印错误信息时,要打印访问的上下文
  • 对于调用接口返回错误的日志(暂定):
    如果为1代表系统异常,打印error级别来预警,否则打印warn级别或者info级别

工具:

项目尽可能的使用log4j2 或者 logback,并且使用slf4j接口打印日志:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);

日志要分级别打印:

  • trace:跟踪日志,与debug差别不大
  • debug:调试问题使用,一定要打印出输入、输出数据
  • info:打印程序运行信息,启动信息等
  • warn:打印一些警告信息,比如参数校验错误等等
  • error:打印程序错误信息,必须要打印上下文信息,方便查找问题
  • fatal:重大灾难信息,比如数据库无法连接等需要立即处理的问题
  • bussiness: 打印重要业务的日志,比如抢购成功、订单创建成功的相关信息、删除用户等

日志文件分开打印,便于查看和抓取日志:

  • *.debug.log
  • *.info.log
  • *.warn.log
  • *.error.log
  • *.biz.log

ELK日志收集预警:

为了ELK收集方便,日志可以打印成json格式:
info.json
warn.json
error.json

error级别日志3分钟预警,发送邮件
warn级别日志10分钟预警,发送邮件

logback可以使用logstash-logback-encoder来打印json格式日志:

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.5.1</version>
</dependency>

** logback.xml配置:**

<appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_HOME}/log.json</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_HOME}/log.json.%d{yyyy-MM-dd}</fileNamePattern>
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
        <jsonFactoryDecorator class="com.sq.proxy.config.MyJsonFactoryDecorator" />
        <providers>
            <timestamp>
                <pattern>yyyy-MM-dd'T'HH:mm:ss.SSSZZ</pattern>
            </timestamp>
            <pattern>
                <pattern>{"level":"%level","service":"${springAppName:-}","host":"%ip","pid":"${PID:-}","thread":"%thread","class":"%logger{40}:%L","message": "%message"},</pattern>
            </pattern>
        </providers>
    </encoder>
</appender>
打印堆栈:

java 代码:

logger.error("getBalanceHint() 异常:{}", ExceptionUtils.getFullStackTrace(e));

相关文章

  • java日志该如何输出

    日志要求: 重要日志一定要打印到日志文件 日志文件应该每天滚动一次,日志多的可以每个小时滚动一次 日期必须精确到毫...

  • springBoot日志系统,实现日志输出到文件中

    Java实现日志输出到文件中

  • Java基础 - 日志

    什么是java日志? 将应用程序的日志输出到指定地址 java日志的核心 Logger :Logger负责捕捉事件...

  • Spring Boot学习之旅:(七)logback配置日志

    本编文章主要介绍:如何引入日志?日志输出格式以及输出方式如何配置?代码中如何使用?Spring Boot在所有内部...

  • 清理linux日志 持续更新

    常见的日志文件如下: nginx log日志 java的进程的输出 /var/log/journal/ 清理未清理...

  • 优秀IDEA插件盘点

    Grep console 配置多颜色日志输出 Alibaba Java Coding Guidelines 阿里巴...

  • log4j2高级应用

    依赖配置 基本组件 Logger 日志记录器 如何输出日志,如指定输出方式、设置日志级别、设置日志过滤器等 App...

  • Java 日志系统

    Java 日志系统 1. 创建日志记录器 2. 打印日志信息 3. 日志的级别 由高到底: 可以调整输出日志的级别...

  • JavaFX中监听console.log输出的日志

    在日志输出前覆盖监听函数即可,该方法可以监听所有webview输出的信息:

  • 日志基础

    日志是用来输出一些信息,方便程序开发,运维人员判断的的信息现如今,主要的日志输出框架有java.util.logg...

网友评论

      本文标题:java日志该如何输出

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