SLF4J+LogBack实现不同级别的日志输出到不同文件

1 使用@Slf4j的正确方法

https://blog.csdn.net/cslucifer/article/details/80953400

2 SLF4J+LogBack实现不同级别的日志输出到不同文件

 https://blog.csdn.net/weixin_41884010/article/details/98053646

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

posted @ 2020-07-09 17:44  kelelipeng  阅读(1568)  评论(0编辑  收藏  举报