1 使用@Slf4j的正確方法
https://blog.csdn.net/cslucifer/article/details/80953400
2 SLF4J+LogBack實現不同級別的日志輸出到不同文件
https://blog.csdn.net/weixin_41884010/article/details/98053646
3 lombok+slf4j+logback SLF4J和Logback日志框架詳解
https://www.cnblogs.com/diegodu/p/6098084.html
4 Slf4j日志配置文件 logback.xml
https://blog.csdn.net/qq_38428623/article/details/82080509
在項目開發中往往需要將不同的級別,不同包,不同接口的日志輸出到不同的文件中,在利用SLF4J+LogBack實現此功能在配置文件中根據不同的級別,包,接口配置不同的appender日志記錄器。
1.LogBack配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- 日志編碼 -->
<property name="CHARSET" value="utf-8"></property>
<!-- 日志記錄格式 -->
<property name="ERROR_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L-%msg%n" />
<property name="INFO_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L-%msg%n" />
<!-- 日志記錄器,日期滾動記錄 -->
<appender name="FILEERROR"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在記錄的日志文件的路徑及文件名 -->
<file>log/log_error.log</file>
<!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>log/error/log-error-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxFileSize>6MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- 追加方式記錄日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${ERROR_PATTERN}</pattern>
<charset>${CHARSET}</charset>
</encoder>
<!-- 此日志文件只記錄info級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日志記錄器,日期滾動記錄 -->
<appender name="FILEINFO"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在記錄的日志文件的路徑及文件名 -->
<file>log/log_info.log</file>
<!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>log/info/log-info-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxFileSize>6MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- 追加方式記錄日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${ERROR_PATTERN}</pattern>
<charset>${CHARSET}</charset>
</encoder>
<!-- 此日志文件只記錄info級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="FILEERROR" />
<appender-ref ref="FILEINFO" />
</root>
</configuration>
對LogBack各個節點的詳細介紹可以看Albin的文章>>logback節點配置詳解
2.日志測試類
public class LogService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public void logMethod() {
try {
logger.info("Method start");
throw new Exception("Method get out a error");
}catch(Exception e) {
logger.error(e.getMessage());
}
}
}
Junit測試類
@RunWith(SpringRunner.class)
@SpringBootTest
public class LogServiceTest {
@Test
public void logtest() {
LogService test = new LogService();
test.logMethod();
}
}
3.日志輸出結果
log_info.log
2019-08-01 16:22:54.580 INFO com.example.demo.logservice.LogService Line:12 -Method start
log_error.log
2019-08-01 16:22:54.581 ERROR com.example.demo.logservice.LogService Line:15 -Method get out a error
————————————————
版權聲明:本文為CSDN博主「小小孟啊」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_41884010/article/details/98053646