SpringBoot集成log4j2出现Logback configuration error detected: current ElementPath is

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: SpringBoot集成log4j2出现Logback configuration error detected: current ElementPath is

异常:一般是包冲突引起的

1 SpringBoot整合Log4j2步骤:

删除spring-boot-starter-parent默认使用spring-boot-starter-logging依赖

在pom.xml中增加spring-boot-starter-log4j2依赖

创建log4j2.xml文件即可

执行,指定目录会生成相应的log文件

2 加入依赖和log4j2.xml文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions><!-- 去掉springboot默认配置 -->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency> <!-- 引入log4j2依赖 -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
 

3.resources目录下创建log4j2.xml文件

<!--定义appender-->
<appenders>
    <!--控制台的输出配置-->
    <console name="Console" target="SYSTEM_OUT">
        <!-- 设置控制台只输出INFO及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
        <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
        <!--输出日志的格式-->
        <PatternLayout pattern="${log_pattern}"/>
    </console>
 
    <!-- 所有的日志信息会打印到此文件中,append=false每次启动程序会自动清空 -->
    <!-- <File name="all" fileName="${file_path}/all.log" append="true">
        <PatternLayout pattern="${log_pattern}"/>
    </File>-->
    <!--
    该RollingFile存储INFO级别的日志,
    默认存储到 fileName 文件中
    超过SizeBasedTriggeringPolicy的设定值,则存储到 filePattern 文件中
    -->
    <RollingFile name="RollingFileInfo" fileName="${file_path}/info.log" filePattern="${file_path}/${backup_folder}/info${backup_file_suffix}">
        <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
        <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
        <!-- 写入日志文件的模板 -->
        <PatternLayout pattern="${log_pattern}"/>
        <Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,超过该数量,会滚动删除前面的记录 -->
            <DefaultRolloverStrategy max="5">
        <Delete basePath="" maxDepth="">
          <IfFileName glob="*.log" />
          <IfLastModified age="*1d" />
        </Delete>
      </DefaultRolloverStrategy>
            <!--多长时间滚动一次-->
            <TimeBasedTriggeringPolicy interval="2 hour" />
            <!-- 一个日志文件的最大大小 -->
            <SizeBasedTriggeringPolicy size="${file_max_size}"/>
        </Policies>
    </RollingFile>
    <RollingFile name="RollingFileWarn" fileName="${file_path}/warn.log" filePattern="${file_path}/${backup_folder}/warn${backup_file_suffix}">
        <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="${log_pattern}"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="${file_max_size}"/>
        </Policies>
    </RollingFile>
    <RollingFile name="RollingFileError" fileName="${file_path}/error.log" filePattern="${file_path}/${backup_folder}/error${backup_file_suffix}">
        <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="${log_pattern}"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="${file_max_size}"/>
        </Policies>
    </RollingFile>
</appenders>
<!-- 只有定义了logger并使用appender-ref,appender才会生效 -->
<loggers>
    <!--过滤掉spring和hibernate的一些无用的debug信息-->
    <logger name="org.springframework" level="INFO"/>
    <logger name="org.mybatis" level="INFO">
        <!-- 添加如下设置,控制台会再打印一次 -->
        <AppenderRef ref="Console"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="Console"/>
        <appender-ref ref="RollingFileInfo"/>
        <appender-ref ref="RollingFileWarn"/>
        <appender-ref ref="RollingFileError"/>
    </root>
</loggers>
 

4.级别描述

机制:如果一条日志信息的级别大于等于配置文件的级别,就记录。

trace:追踪,就是程序推进一下,可以写个trace输出

debug:调试,一般作为最低级别,trace基本不用。

info:输出重要的信息,使用较多

warn:警告,有些信息不是错误信息,但也要给程序员一些提示。

error:错误信息。用的也很多。

fatal:致命错误。

 

5.输出源控制

  • CONSOLE(输出到控制台)
  • FILE(输出到文件)

 

6.输出格式

  • SimpleLayout:以简单的形式显示
  • HTMLLayout:以HTML表格显示
  • PatternLayout:自定义形式显示

7.PatternLayout自定义日志布局

%d:显示日志记录时间,{<日期格式>}使用ISO8601定义的日期格式 如:%d{yyyy-MM-dd HH:mm:ss}

%-5level : 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0

%c : 列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名 字空间

%C : 列出调用logger的类的全名(包含包路径)

%t : 输出当前线程名称

%p : 日志输出格式

%m : 日志内容,即 logger.info(“message”)

%M : 方法名

%n : 换行符

%F: 显示调用logger的源文件名

%L : 行号

%l : 输出语句所在的行数, 包括类名、方法名、文件名、行数

%r : 显示从程序启动时到记录该条日志时已经经过的毫秒数

%t : 输出产生该日志事件的线程名

%x : 按NDC(Nested Diagnostic Context,线程堆栈)顺序输出日志

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
121 5
|
13天前
|
开发框架 运维 监控
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
|
5月前
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
21天前
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
71 8
|
2月前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
69 1
|
2月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
66 1
|
3月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
178 1
|
3月前
|
Java Maven Spring
SpringBoot日志整合
SpringBoot日志整合
41 2
|
3月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
277 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
3月前
|
SQL XML 监控
SpringBoot框架日志详解
本文详细介绍了日志系统的重要性及其在不同环境下的配置方法。日志用于记录系统运行时的问题,确保服务的可靠性。文章解释了各种日志级别(如 info、warn、error 等)的作用,并介绍了常用的日志框架如 SLF4J 和 Logback。此外,还说明了如何在 SpringBoot 中配置日志输出路径及日志级别,包括控制台输出与文件输出的具体设置方法。通过这些配置,开发者能够更好地管理和调试应用程序。