SpringBoot 项目
根据不同环境,配置不同的日志等级
@logging.level@参数:SpringBoot 整合 maven 多环境配置
config自定义名称,普通项目无法使用,因为没读取yml文件
# 日志配置
logging:
level:
org.dromara: @logging.level@
org.springframework: warn
tech.powerjob.worker.background: warn
config: classpath:logback-plus.xml
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
普通项目
普通项目必须要修改为logback.xml
才会生效
示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- property 代表定义一些变量可以供下面使用 -->
<property name="log.path" value="./logs"/>
<property name="console.log.pattern"
value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${console.log.pattern}</pattern>
<charset>utf-8</charset>
</encoder>
</appender>
<!-- 控制台输出 -->
<appender name="file_console" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-console.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-console.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大 1天 -->
<maxHistory>1</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
</filter>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--异步日志记录是通过将日志记录操作与主应用程序线程解耦,以提升应用程序性能和响应速度的重要技术之一-->
<!-- info异步输出 -->
<appender name="async_info" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="file_info"/>
</appender>
<!-- error异步输出 -->
<appender name="async_error" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="file_error"/>
</appender>
<!--系统操作日志 如果没有明确指定日志附加器(appender),可能会有一些默认的附加器,比如输出到控制台或者默认的日志文件,指定异步的就不需要指定同步的了-->
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="async_info" />
<appender-ref ref="async_error" />
<appender-ref ref="file_console" />
</root>
</configuration>
Appender的种类
- ConsoleAppender(控制台附加器):将日志输出到控制台,通常是标准输出或标准错误输出。
- FileAppender(文件附加器):将日志输出到指定的文件中。可以是普通的文件附加器,也可以是滚动文件附加器(例如,按时间或大小滚动)。
- RollingFileAppender(滚动文件附加器):将日志输出到文件,并根据特定的策略(如时间或文件大小)滚动生成新的日志文件,以避免单个日志文件过大或保留历史日志。
- AsyncAppender(异步附加器):将日志事件异步地传输到另一个appender,以提高日志记录的性能。通过内部队列和后台线程来实现异步输出。
- SocketAppender(套接字附加器):将日志事件通过网络套接字发送到远程服务器或其他应用程序,用于集中管理和分析日志。
- JDBCAppender(数据库附加器):将日志事件写入到关系型数据库(如MySQL、PostgreSQL)中,通常用于将日志数据集成到应用程序的数据存储中。
- SMTPAppender(邮件附加器):将日志事件通过电子邮件发送给指定的收件人,用于重要的错误或警告通知。
- NullAppender(空附加器):将所有的日志事件丢弃,即不做任何实际的日志记录操作,通常用于测试或调试阶段。这些appender类型覆盖了常见的日志输出场景,使得开发人员可以根据应用程序的需求选择合适的日志输出方式和目标。