一、 使用前组件准备:
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
扫描二维码关注公众号,回复:
328015 查看本文章
二、开始使用
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" />
如有理解不对的,请指正,谢谢