Spring日志配置

时间:2025-04-03 08:46:53
<?xml version="1.0" encoding="UTF-8"?> <!--日志配置根结点--> <configuration> <!--设置上下文名称--> <contextName>MulunSrb</contextName> <!-- 日志的输出目录 --> <property name="" value="/Users/mulun/Log/oss/"/> <!--控制台日志格式:彩色日志--> <!-- magenta:洋红 --> <!-- boldMagenta:粗红--> <!-- cyan:青色 --> <!-- white:白色 --> <property name="CONSOLE_LOG_PATTERN" value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/> <!--文件日志格式--> <property name="FILE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n"/> <!--编码--> <property name="ENCODING" value="UTF-8"/> <!-- 控制台日志 --> <!-- <appender>是<configuration>的子节点,是负责写日志的组件--> <!-- <appender>有两个必要属性name和class:name指定appender名称,class指定appender的全限定名--> <!-- <encoder>对日志进行格式化--> <!-- <pattern>定义日志的具体输出格式--> <!-- <charset>编码方式--> <appender name="CONSOLE" class=""> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender> <!-- 文件日志 --> <!-- <file>表示日志文件的位置,如果上级目录不存在会自动创建,没有默认值。--> <!-- <append>默认 true,日志被追加到文件结尾,如果是 false,服务重启后清空现存文件。--> <appender name="FILE" class=""> <file>${}/</file> <append>true</append> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender> <!-- 滚动日志--> <!-- 问题:生产环境下,如果系统长时间运行,那么日志文件会变得越来越大,系统读取和写入日志的时间会越来越慢,严重的情况会耗尽系统内存,导致系统宕机。--> <!-- 解决方案:可以设置滚动日志--> <!-- RollingFileAppender是Appender的另一个实现,表示滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将旧日志备份到其他文件--> <!-- <rollingPolicy>是<appender>的子节点,用来定义滚动策略。--> <!-- TimeBasedRollingPolicy:最常用的滚动策略,根据时间来制定滚动策略。--> <!-- <fileNamePattern>:包含文件名及转换符, “%d”可以包含指定的时间格式,如:%d{yyyy-MM-dd}。如果直接使用 %d,默认格式是 yyyy-MM-dd。--> <!-- <maxHistory>:可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,且<maxHistory>是6,则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除。--> <appender name="ROLLING_FILE" class=""> <!-- 要区别于其他的appender中的文件名字 --> <file>${}/</file> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> <!-- 设置滚动日志记录的滚动策略 --> <rollingPolicy class=""> <!-- 日志归档路径以及格式 --> <fileNamePattern>${}/info/log-rolling-%d{yyyy-MM-dd}.%</fileNamePattern> <!--归档日志文件保留的最大数量--> <maxHistory>15</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class=""> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- 日志记录器,如果配置了下面多环境日志,就不要开启这个了 --> <!-- <logger>可以是<configuration>的子节点,用来设置某一个包或具体某一个类的日志打印级别、指定<appender>--> <!-- name:用来指定受此logger约束的某一个包或者具体的某一个类--> <!-- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF。默认继承上级的级别--> <!-- <logger>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个logger--> <!-- <logger name="" level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </logger>--> <!-- 开发环境和测试环境 --> <springProfile name="dev,test"> <logger name="" level="DEBUG"> <appender-ref ref="CONSOLE"/> </logger> </springProfile> <!-- 生产环境 --> <springProfile name="prod"> <logger name="" level="ERROR"> <appender-ref ref="CONSOLE"/> <appender-ref ref="ROLLING_FILE"/> </logger> </springProfile> </configuration>