您好,欢迎访问一九零五行业门户网

springboot整合log4j报错怎么解决

1、依赖添加 1.1、添加依赖需要引入 log4j 的依赖支持,推荐自己确定使用的版本。
<dependency> <groupid>org.apache.logging.log4j</groupid> <artifactid>log4j-to-slf4j</artifactid> <version>2.11.2</version></dependency>
1.2、剔除依赖springboot 默认自己内部添加了对日志的支持,需要将其全部剔除掉,不然会影响 log4j 的依赖使用。
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-logging</artifactid> <exclusions> <exclusion> <groupid>*</groupid> <artifactid>*</artifactid> </exclusion> </exclusions></dependency>
2、配置日志 2.1、日志打印记录&emsp;根据自己的需求进行相关的配置,这里需要注意的是使用 xml 文件进行配置,使用 properties 有坑没爬起来,文件名自定义,没有啥要求,都会在配置文件中进行指定的。
<?xml version="1.0" encoding="utf-8"?><configuration scan="true" scanperiod="10 seconds"> <contextname>beordie</contextname> <property name="path" value="e:\file\javalearn\blog\src\main\resources\logs" /> <conversionrule conversionword="clr" converterclass="org.springframework.boot.logging.logback.colorconverter" /> <conversionrule conversionword="wex" converterclass="org.springframework.boot.logging.logback.whitespacethrowableproxyconverter" /> <conversionrule conversionword="wex" converterclass="org.springframework.boot.logging.logback.extendedwhitespacethrowableproxyconverter" /> <property name="console_log_pattern" value="${console_log_pattern:-%clr(%d{yyyy-mm-dd hh:mm:ss.sss}){faint} %clr(${log_level_pattern:-%5p}) %clr(${pid:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${log_exception_conversion_word:-%wex}}"/> <appender name="console" class="ch.qos.logback.core.consoleappender"> <filter class="ch.qos.logback.classic.filter.thresholdfilter"> <level>info</level> </filter> <encoder> <pattern>${console_log_pattern}</pattern> <charset>utf-8</charset> </encoder> </appender> <appender name="debug_file" class="ch.qos.logback.core.rolling.rollingfileappender"> <file>${path}/debug.log</file> <encoder> <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy"> <filenamepattern>${log}/debug/log-debug-%d{yyyy-mm-dd}.%i.log</filenamepattern> <timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp"> <maxfilesize>100mb</maxfilesize> </timebasedfilenamingandtriggeringpolicy> <maxhistory>15</maxhistory> </rollingpolicy> <filter class="ch.qos.logback.classic.filter.levelfilter"> <level>debug</level> <onmatch>accept</onmatch> <onmismatch>deny</onmismatch> </filter> </appender> <appender name="info_file" class="ch.qos.logback.core.rolling.rollingfileappender"> <file>${log}/info.log</file> <encoder> <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy"> <filenamepattern>${log}/info/log-info-%d{yyyy-mm-dd}.%i.log</filenamepattern> <timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp"> <maxfilesize>100mb</maxfilesize> </timebasedfilenamingandtriggeringpolicy> <maxhistory>15</maxhistory> </rollingpolicy> <filter class="ch.qos.logback.classic.filter.levelfilter"> <level>info</level> <onmatch>accept</onmatch> <onmismatch>deny</onmismatch> </filter> </appender> <appender name="warn_file" class="ch.qos.logback.core.rolling.rollingfileappender"> <file>${log}/warn.log</file> <encoder> <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy"> <filenamepattern>${log}/warn/log-warn-%d{yyyy-mm-dd}.%i.log</filenamepattern> <timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp"> <maxfilesize>100mb</maxfilesize> </timebasedfilenamingandtriggeringpolicy> <maxhistory>15</maxhistory> </rollingpolicy> <filter class="ch.qos.logback.classic.filter.levelfilter"> <level>warn</level> <onmatch>accept</onmatch> <onmismatch>deny</onmismatch> </filter> </appender> <appender name="error_file" class="ch.qos.logback.core.rolling.rollingfileappender"> <file>${log}/error.log</file> <encoder> <pattern>%d{yyyy-mm-dd hh:mm:ss.sss} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>utf-8</charset> </encoder> <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy"> <filenamepattern>${log}/error/log-error-%d{yyyy-mm-dd}.%i.log</filenamepattern> <timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp"> <maxfilesize>100mb</maxfilesize> </timebasedfilenamingandtriggeringpolicy> <maxhistory>15</maxhistory> </rollingpolicy> <filter class="ch.qos.logback.classic.filter.levelfilter"> <level>error</level> <onmatch>accept</onmatch> <onmismatch>deny</onmismatch> </filter> </appender> <springprofile name="dev"> <logger name="com.beordie" level="debug"/> </springprofile> <root level="info"> <appender-ref ref="console" /> <appender-ref ref="debug_file" /> <appender-ref ref="info_file" /> <appender-ref ref="warn_file" /> <appender-ref ref="error_file" /> </root></configuration>
2.2、指定配置文件还需要在 spring boot 的项目配置文件中进行配置的指定。
logging: config: classpath:log4j.xml
到这里完成对日志的整体配置,启动项目通过下面语句拿到日志对象即可进行日志的打印输出。
private final logger logging = loggerfactory.getlogger(articlecontroller.class);
补充:log4j调优和注意事项日志模式-同步/异步
log4j2提供了asyncappender和asynclogger以及全局异步,开启方式如下:
同步模式:默认配置即为同步模式,即没有使用任何asyncappender和asynclogger。
全局异步:配置按照同步方式配,通过添加jvm启动参数即可开启全局异步,无需修改配置和应用。
混合异步:使用异步logger和同步logger的混合配置,且不开启全局异步,即logger配置中部分asynclogger,部分logger。
日志模式使用注意事项:
如果使用异步,建议使用asynclogger实现而不是asyncappender。
如果使用同步,asynclogger、asyncappender和全局异步只能使用一种,不可以同时配置asyncappender和asynclogger,或者配置了异步的情况下启用了全局异步。
日志滚动和清除策略
log4j2提供了基于文件大小的滚动策略和基于时间的滚动策略,也可以二者并用,这里给出基于大小的滚动策略配置和基于大小/时间双滚动策略配置:
基于大小的滚动策略:按照大小滚动,启用压缩,并最多保留n个文件
基于大小/时间双滚动滚动策略:按照大小和时间滚动,启用压缩,单位时间内控制最多保留日志个数并控制总的日志留存时间。
以上就是springboot整合log4j报错怎么解决的详细内容。
其它类似信息

推荐信息