一、 使用前组件准备:
maven项目使用logback:
pom文件中添加:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.5</version>
</dependency>
也可手动添加组件:
logback-access-1.1.5.jar
logback-classic-1.1.5.jar
logback-core-1.1.5.jar
slf4j-api-1.7.16.jar
注意:如果与框架结合使用 比如struts、spring、hibernate等开源框架,而这些框架很多是使用log4j记录日志的,因此需要log4j-over-slf4j-1.6.6.jar
二、开始使用
1、 使用logback将日志打印到控制台:
示例代码:
/**
* @author zw Date: 2016/10/9 Time:15:04.
*/
public class TestDemo {
private static Logger log = LoggerFactory.getLogger(TestDemo.class);
public static void main(String[]args){
/**
* log日志分为 trace debug info warn error 五个级别
* 级别等级顺序 trace < debug < info < warn < error
*/
log.trace("----this log is trace level");
log.debug("----this log is debug level");
log.info("----this log is info level");
log.warn("----this log is warn level");
log.error("----this log is error level");
String name = "logback";
String message = "demo";
String[] params = { "logback", "logback" };
// logback提供的可以使用变量的打印方式
log.info("##########hello,{}!", name);
// 使用占位符方式输出日志信息
log.info("##########hello {}! this is {}!", name, message);
// 可以传入一个数组
log.info("##########hello {}! this is {}", params);
}
}
logback.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--configuration 属性说明:
scan属性:用来设置配置文件变动时是否重新加载,值是 true\false ,默认是true即 配置变动时重新加载
scanPeriod属性:用来设置每隔多久检查一次配置是否变动,默认是1分钟,默认单位是毫秒
debug属性:用来设置是否将logback内部的日志打印出来,即启动时输出配置加载信息。值为true\false 默认为false-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--定义日志输出格式-->
<property name="enPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder >
<pattern>${enPattern}</pattern>
</encoder>
</appender>
<!-- root的默认level是DEBUG 可以包含多个<appender-ref>元素-->
<root level="TRACE">
<appender-ref ref="STDOUT" />
</root>
</configuration>
2、 将日志记录到文件中:
示例代码:同1中的示例代码。
logback配置文件修改:
在configuration中添加:
<!--定义日志输出文件目录--> <property name="outFilePath" value="E:/个人/demo/logs/demo.log" />
并替换appender节点,
<appender name="STDOUT" class="ch.qos.logback.core.FileAppender">
<file>${outFilePath}</file>
<append>true</append>
<encoder charset="UTF-8">
<pattern>${enPattern}</pattern>
</encoder>
</appender>
3、同时输出到文件和控制台:
示例代码同1.
配置文件如下:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>${enPattern}</pattern>
</encoder>
</appender>
<appender name="toFile" class="ch.qos.logback.core.FileAppender">
<file>${outFilePath}</file>
<append>true</append>
<encoder charset="UTF-8">
<pattern>${enPattern}</pattern>
</encoder>
</appender>
<!-- root的默认level是DEBUG 可以包含多个<appender-ref>元素-->
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="toFile" />
</root>
4、输出日志到文件每天或每小时等一个文件:
示例代码:同1:
配置文件:
在3的基础上,修改。增加:
<!--定义今日之前日志输出文件-->
<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyy-MM-dd}.log" />
并修改 name为 toFile的appender,修改后如下:
<!--定义日志输出格式-->
<property name="enPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level {%C.java:%L} - %msg%n" />
<!--定义日志输出文件目录-->
<property name="outFilePath" value="E:/个人/demo/logs/demo.log" />
<!--定义今日之前日志输出文件-->
<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyy-MM-dd}.log" />
<!--带有loger的配置,不指定级别,不指定appender 输出到控制台-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>${enPattern}</pattern>
</encoder>
</appender>
<!--今日日志输出到 outFilePath ,今日之前的日志在 -->
<appender name="toFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--今日日志记录的日志文件-->
<file>${outFilePath}</file>
<append>true</append>
<!--设定昨日的日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--昨日日志的日志文件-->
<fileNamePattern>${outOldFilePath}</fileNamePattern>
<!--保留30天内的日志-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${enPattern}</pattern>
</encoder>
</appender>
<!-- root的默认level是DEBUG 可以包含多个<appender-ref>元素-->
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="toFile" />
</root>
也可以按分钟或小时分文件输出,调整
<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyy-MM-dd}.log" />
为:
a、按小时分:
<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyyMMddHH}.log" />
b、按分钟分:
<property name="outOldFilePath" value="E:/个人/demo/logs/demo-%d{yyyyMMddHHMM}.log" />
如有理解不对的,请指正,谢谢
本文详细介绍如何在Maven项目中使用Logback进行日志管理,包括配置文件详解及不同场景的日志输出策略。
521

被折叠的 条评论
为什么被折叠?



