java日志该如何输出

2019-08-16  本文已影响0人  时间道

日志要求:

工具:

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

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

日志要分级别打印:

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

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));
上一篇 下一篇

猜你喜欢

热点阅读