spring boot 默认使用 logback。我见过很多地方说logback比log4j消耗更多的性能。我还没有尝试过,但我仍然更个人地使用 log4j。

先看pom依赖

<依赖>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<排除>

<排除>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-logging</artifactId>

</排除>

</排除>

</依赖>

<依赖>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-log4j2</artifactId>

</依赖>

spring boot log 提供了三种日志实现Java Util Logging,Log4J2SumLogback

要选择其中之一,您需要设置系统属性 org.springframework.boot.logging.LoggingSystem。一开始我是直接在启动类中设置的

System.setProperty("org.springframework.boot.logging.LoggingSystem","Log4J2");

然而,发现并非如此。后来看了下代码,发现这几行

试试看。真实的设定是这样的

System.setProperty("org.springframework.boot.logging.LoggingSystem","org.springframework.boot.logging.log4j2.Log4J2LoggingSystem");

使用不同的日志实现,系统默认会加载以下文件

回溯

logback-spring.xml、logback-spring.groovy、logback.xml 或 logback.groovy

日志4j2

log4j2-spring.xml 或 log4j2.xml

JDK(Java 实用程序日志记录)

日志记录属性

所以此时如果需要自定义日志配置,可以在resource下创建log4j2.xml

<?xml 版本u003d"1.0" 编码u003d"UTF-8"?>

<配置状态\u003d"警告">

<属性>

<属性名\u003d"PID">????</属性>

<属性名称\u003d"LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>

<属性名称\u003d"LOG_LEVEL_PATTERN">%5p</属性>

<属性名称\u003d"LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>

<属性名称\u003d"CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{$ {sys:PID}}{洋红色} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{青色} %clr {:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>

<属性名称\u003d"FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>

</属性>

<附加程序>

<控制台名称\u003d"控制台"目标\u003d"SYSTEM_OUT"跟随\u003d"true">

<PatternLayout pattern\u003d"${sys:CONSOLE\LOG\PATTERN}" />

</控制台>

</Appenders>

<记录器>

<Logger name\u003d"org.apache.catalina.startup.DigesterFactory" level\u003d"error" />

<Logger name\u003d"org.apache.catalina.util.LifecycleBase" level\u003d"error" />

<Logger name\u003d"org.apache.coyote.http11.Http11NioProtocol" level\u003d"warn" />

<logger name\u003d"org.apache.sshd.common.util.SecurityUtils" 级别\u003d"warn"/>

<Logger name\u003d"org.apache.tomcat.util.net.NioSelectorPool" level\u003d"warn" />

<Logger name\u003d"org.eclipse.jetty.util.component.AbstractLifeCycle" level\u003d"error" />

<Logger name\u003d"org.hibernate.validator.internal.util.Version" level\u003d"warn" />

<logger name\u003d"org.springframework.boot.actuate.endpoint.jmx" level\u003d"warn"/>

<根级别\u003d"信息">

<AppenderRef ref\u003d"Console" />

</根>

</记录器>

</配置>

这是官方默认配置。这是我自己修改的配置

<?xml 版本u003d"1.0" 编码u003d"UTF-8"?>

<!--日志级别和优先级排序:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

<!--Configuration Hinder status,这个是用来设置log4j2本身的内部信息输出,设置成trace的时候不能设置自己的内部信息输出,当你看到log4j2的各种内部详细输出-->

<!--monitorInterval: Log4j 可以自动检测修改配置文件并自行重新配置,设置间隔以秒为单位-->

<配置状态\u003d"WARN" monitorInterval\u003d"30">

<属性>

<属性名\u003d"PID">????</属性>

<属性名称\u003d"LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>

<属性名称\u003d"LOG_LEVEL_PATTERN">%5p</属性>

<属性名称\u003d"LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>

<属性名称\u003d"CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{$ {sys:PID}}{洋红色} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{青色} %clr {:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>

<属性名称\u003d"FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>

</属性>

<!--定义所有第一个appender-->

<附加程序>

<!--此输出控制台的配置-->

<控制台名称\u003d"控制台"目标\u003d"SYSTEM_OUT"跟随\u003d"true">

<PatternLayout pattern\u003d"${sys:CONSOLE\LOG\PATTERN}" />

</控制台>

<!--文件会打印出所有的信息,这个log每次程序运行都会被append属性判断自动清空,这个也很有用,适合临时测试-->

<!--<File nameu003d"log" fileNameu003d"log/test.log" appendu003d"false">-->

<!--<PatternLayout patternu003d"%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>-->

<!--</文件>-->

<!-- 这会打印所有的info和下面,每次超过size,那么这个size的日志会自动按年保存--当月创建的文件夹被压缩为存档-->

<RollingFile 名称\u003d"RollingFileInfo" 文件名\u003d"./logs/info.log"

filePattern\u003d"./logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">

<!--控制台只输出level及以上(onMatch),其他直接拒绝(onMismatch)-->

<ThresholdFilter level\u003d"info" onMatch\u003d"ACCEPT" onMismatch\u003d"DENY"/>

<PatternLayout pattern\u003d"[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

<政策>

<TimeBasedTriggeringPolicy/>

<SizeBasedTriggeringPolicy 大小\u003d"100 MB"/>

</政策>

</滚动文件>

<RollingFile 名称\u003d"RollingFileWarn" 文件名\u003d"./logs/warn.log"

filePattern\u003d"./logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">

<ThresholdFilter level\u003d"warn" onMatch\u003d"ACCEPT" onMismatch\u003d"DENY"/>

<PatternLayout pattern\u003d"[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

<政策>

<TimeBasedTriggeringPolicy/>

<SizeBasedTriggeringPolicy 大小\u003d"100 MB"/>

</政策>

<!-- DefaultRolloverStrategy 如果不设置该属性,则默认值为同一个文件夹下最多7个文件。这里设置了20个文件-->

<DefaultRolloverStrategy max\u003d"20"/>

</滚动文件>

<RollingFile 名称\u003d"RollingFileError" 文件名\u003d"./logs/error.log"

filePattern\u003d"./logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">

<ThresholdFilter level\u003d"error" onMatch\u003d"ACCEPT" onMismatch\u003d"DENY"/>

<PatternLayout pattern\u003d"[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

<政策>

<TimeBasedTriggeringPolicy/>

<SizeBasedTriggeringPolicy 大小\u003d"100 MB"/>

</政策>

</滚动文件>

<!-- sql输出文件-->

<滚动文件名\u003d"SQL" 文件名\u003d"./logs/sql.log"

filePattern\u003d"./logs/$${date:yyyy-MM}/sql-%d{yyyy-MM-dd}-%i.log">

<ThresholdFilter level\u003d"debug" onMatch\u003d"ACCEPT" onMismatch\u003d"DENY"/>

<PatternLayout pattern\u003d"[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

<政策>

<TimeBasedTriggeringPolicy/>

<SizeBasedTriggeringPolicy 大小\u003d"100 MB"/>

</政策>

</滚动文件>

</appenders>

<!--然后定义logger,只定义了logger并引入了appender,appender才会生效-->

<记录器>

<Logger name\u003d"org.apache.catalina.startup.DigesterFactory" level\u003d"error" />

<Logger name\u003d"org.apache.catalina.util.LifecycleBase" level\u003d"error" />

<Logger name\u003d"org.apache.coyote.http11.Http11NioProtocol" level\u003d"warn" />

<logger name\u003d"org.apache.sshd.common.util.SecurityUtils" 级别\u003d"warn"/>

<Logger name\u003d"org.apache.tomcat.util.net.NioSelectorPool" level\u003d"warn" />

<Logger name\u003d"org.eclipse.jetty.util.component.AbstractLifeCycle" level\u003d"error" />

<Logger name\u003d"org.hibernate.validator.internal.util.Version" level\u003d"warn" />

<logger name\u003d"org.springframework.boot.actuate.endpoint.jmx" level\u003d"warn"/>

<!--输出sql-->

<logger name\u003d"com.qthl.wf.dao" level\u003d"debug" additivity\u003d"false">

<appender-ref ref\u003d"Console"/>

<appender-ref ref\u003d"SQL"/>

</记录器>

<根级别\u003d"信息">

<appender-ref ref\u003d"Console"/>

<appender-ref ref\u003d"RollingFileInfo"/>

<appender-ref ref\u003d"RollingFileWarn"/>

<appender-ref ref\u003d"RollingFileError"/>

</根>

</记录者>

</配置>

Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐