spring boot - log4j2从入门到精通不完全指南

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boom_man/article/details/84031063

Spring boot

log4j2官网:https://logging.apache.org/log4j/2.x/

配置log4j2

application.properties

logging.config= classpath:config/log4j2-dev.xml

maven配置

        <dependency> <!-- 引入log4j2依赖 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        
        <!--移除spring boot 原生logging的依赖-->
             <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>

spi 用户实现的接口

Logger -> Appender -> Filter -> Layout -> ObjectRenderer -> Destination

日志对象 Logger

日志级别 Level

日志管理器 LogManager 初始化默认log配置 维护日志仓储 获取日志对象

日志仓储 LoggerRepository 管理日志级别阈值 管理日志对象

日志附加器 Appender 具体输出介质 附加日志事件 关联日志布局 关联日志过滤器 关联错误处理器 Console 文件 file rollingFile dailyRollingFile Socket JMS SMTP Async

日志过滤器 Filter DENY ACCEPT NEUTRAL

日志格式布局 Layout 简单格式 模式格式 提升模式格式 html格式 xml格式 ttcc格式

日志事件 LoggingEvent 日志事件是用于承载日志信息的对象 日志名称 日志内容 日志级别 异常信息 当前线程名称 时间戳 嵌入诊断上下文NDC 映射诊断上下文MDC

日志配置器 Configurator 重点* 外部配置文件配置log4j行为的api 配置文件间接调用api 1.properties 2.xml

日志诊断上下文 NDC嵌套 push pop 堆栈 MDC映射KeyValue的形式存储诊断信息 占位符 最终输出的内容

1.错误日志,有必要记录e.printStackTrace()信息吗

有必要,但多的时候可以通过JVM来控制异常栈输出

2.怎么判断我该把这个日志记录在哪个级别

DEBUG 级别记录一些上下文参数,以及输出结果

INFO 级别记录一些操作成功或者失败,类似于黑盒结果

WARN 级别记录 CPU,一些阈值达到了,或者不主要的输入输出

ERROR 记录一些相关的错误

3.MDC

log(“some error”)//没法传递用户ID,可以通过MDC的方式 在上文传递用户ID

阅读更多

没有更多推荐了,返回首页