参考官方网址: https://logging.apache.org/log4j/2.x
一、log4j日志级别配置说明
1 2 3 4 5 6 7 8 9 10 11 12 13 |
log4j提供了4种日志级别和2个日志开关。 DEBUG:输出调试信息;指出细粒度信息事件对调试应用程序是非常有帮助的。 INFO: 输出提示信息;消息在粗粒度级别上突出强调应用程序的运行过程。 WARN: 输出警告信息;表明会出现潜在错误的情形。 ERROR:输出错误信息;指出虽然发生错误事件,但仍然不影响系统的继续运行。 FATAL: 输出致命错误;指出每个严重的错误事件将会导致应用程序的退出。 ALL level:打开所有日志记录开关;是最低等级的,用于打开所有日志记录。 OFF level:关闭所有日志记录开关;是最高等级的,用于关闭所有日志记录。 按照范围从小到大排序:OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level;范围大的会包含范围小的,例如日志设置为INFO级别的话则FATAL、ERROR、WARN、INFO的日志开关都是打开的,而DEBUG的日志开关将是关闭的。 Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。 |
二、logback-spring.xml配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
<?xml version="1.0" encoding="UTF-8"?> <!-- 说明: 1、日志级别及文件 日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中。 2、日志级别可以根据开发环境进行配置,为方便统一管理查看日志,日志文件路径统一由LOG_PATH:-.配置在/home/项目名称/logs --> <configuration> <!-- 引入默认设置 --> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <!-- 编码格式设置 --> <property name="ENCODING" value="UTF-8" /> <!-- 日志文件的存储地址,由application.yml中的logging.path配置,根路径默认同项目路径 --> <property name="LOG_HOME" value="${LOG_PATH:-.}" /> <!-- 常规输出格式:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <property name="NORMAL_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}.%method@%line - %msg%n"/> <!-- 彩色输出格式:magenta:洋红,boldMagenta:粗红,yan:青色,·#══> --> <property name="CONSOLE_LOG_PATTERN" value="%boldMagenta([%d{yyyy-MM-dd HH:mm:ss.SSS}]) %red([%thread]) %boldMagenta(%-5level) %blue(%logger{20}.%method@%line) %magenta(·#═>) %cyan(%msg%n)"/> <!-- ==========================控制台输出设置========================== --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender> <!-- ==========================按天输出日志设置========================== --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/system-info.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滚 daily --> <FileNamePattern>${LOG_HOME}/system-info.%d{yyyy-MM-dd}.log</FileNamePattern> <!-- 日志文件保留天数 --> <MaxHistory>30</MaxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <!-- 设置拦截的对象为INFO级别日志 --> <onMatch>ACCEPT</onMatch> <!-- 当遇到了INFO级别时,启用该段配置 --> <onMismatch>DENY</onMismatch> <!-- 没有遇到INFO级别日志时,屏蔽该段配置 --> </filter> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${NORMAL_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> <!-- 日志文件最大的大小 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!-- ==========================按天输出ERROR级别日志设置========================== --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/system-error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滚 daily --> <FileNamePattern>${LOG_HOME}/system-error.%d{yyyy-MM-dd}.log</FileNamePattern> <!-- 日志文件保留天数 --> <MaxHistory>30</MaxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <!-- 设置拦截的对象为ERROR级别日志 --> <onMatch>ACCEPT</onMatch> <!-- 当遇到了ERROR级别时,启用该段配置 --> <onMismatch>DENY</onMismatch> <!-- 没有遇到ERROR级别日志时,屏蔽该段配置 --> </filter> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${NORMAL_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> <!-- 日志文件最大的大小 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!-- ==========================用户登录日志设置========================== --> <appender name="USER_LOGIN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/user-login.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滚 daily --> <fileNamePattern>${LOG_HOME}/auth-user.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日志最大的历史 30天 --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>${NORMAL_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender> <!-- ===日志输出级别,OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level=== --> <logger name="com.sand" level="INFO"/> <logger name="com.apache.ibatis" level="INFO"/> <logger name="java.sql.Statement" level="INFO"/> <logger name="java.sql.Connection" level="INFO"/> <logger name="java.sql.PreparedStatement" level="INFO"/> <logger name="org.springframework" level="WARN"/> <logger name="com.baomidou.mybatisplus" level="WARN"/> <!-- 用户登录日志 --> <logger name="user-login" level="INFO"> <appender-ref ref="USER_LOGIN"/> </logger> <!-- ======开发环境:打印控制台和输出到文件====== --> <springProfile name="dev"><!-- 由application.yml中的spring.profiles.active配置 --> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="ERROR_FILE"/> </root> </springProfile> <!-- ======测试环境:打印控制台和输出到文件====== --> <springProfile name="test"><!-- 由application.yml中的spring.profiles.active配置 --> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="ERROR_FILE"/> </root> </springProfile> <!-- ======生产环境:打印控制台和输出到文件====== --> <springProfile name="prod"><!-- 由application.yml中的spring.profiles.active配置 --> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="ERROR_FILE"/> </root> </springProfile> </configuration> |
注意:登录日志的记录还需进行以下配置,用lombok的话直接使用注解即可 @Slf4j(topic = "user-login")
配置效果如下:
from:https://www.cnblogs.com/54hsh/p/12684241.html