logback学习后的完整例⼦
【背景】
看项⽬⾥的⽇志记录不太懂,然后⾃⼰创建⼀个项⽬测试⽇志的分类,下⾯是看的⼀个博主的博客,觉得很全,⾃⼰将jar包的版本升级后测试也是ok的。
这⾥只是简单的实践了⼀下使⽤⽅法,具体细节可以参照下⾯两个不错的帖⼦。
【相关组件】
Logback是由创始⼈设计的⼜⼀个开源⽇志组件。
logback当前分成三个模块:logback-core、logback- classic和logback-access。
logback-core:是其它两个模块的基础模块。
logback-classic:是log4j的⼀个 改良版本。此外logback-classic完整实现SLF4J API使你可以很⽅便地更换成其它⽇志系统如log4j或JDK14 Logging。
logback-access:访问模块与Servlet容器集成提供通过Http来访问⽇志的功能。
【Maven依赖】
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
【l】
logback的配置⽂件都放在/src/main/resource/⽂件夹下的l⽂件中。⾄于如何到这个位置的,这⾥就不在介绍了。
放置路径如下图所⽰:
【l内容】
从⽹上了⼀个⽐较完整的版本,验证了⼀下可以使⽤。我就直接拿来⽤了。内容如下。
其中需要注意的是log_dir这个属性,该属性⽤来定义⽇志的输出路径。由于我们项⽬中都是布置在Linux上运⾏的,所以这⾥使⽤的是⼀个绝对路径。
maven打包本地jar包<!-- 级别从⾼到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- ⽇志输出规则根据当前ROOT 级别,⽇志输出时,级别⾼于root默认的级别时会输出 -->
<!-- 以下每个配置的 filter 是过滤掉输出⽂件⾥⾯,会出现⾼级别⽂件,依然出现低级别的⽇志信息,通过filter 过滤只记录本级别的⽇志 -->
<!-- scan 当此属性设置为true时,配置⽂件如果发⽣改变,将会被重新加载,默认值为true。 -->
<!-- scanPeriod 设置监测配置⽂件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性⽣效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为true时,将打印出logback内部⽇志信息,实时查看logback运⾏状态。默认值为false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 动态⽇志级别 -->
<jmxConfigurator />
<!-- 定义⽇志⽂件输出位置 -->
<!-- <property name="log_dir" value="C:/test" />-->
<property name="log_dir" value="/home/hadmin/data/logs/src"/>
<!-- ⽇志最⼤的历史 30天 -->
<property name="maxHistory" value="30"/>
<!-- ConsoleAppender 控制台输出⽇志 -->
<appender name="console" class="ch.ConsoleAppender">
<encoder>
<pattern>
<!-- 设置⽇志输出格式 -->
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n
</pattern>
</encoder>
</appender>
<!-- ERROR级别⽇志 -->
<!-- 滚动记录⽂件,先将⽇志记录到指定⽂件,当符合某个条件时,将⽇志记录到其他⽂件 RollingFileAppender -->
<appender name="ERROR" class="ch.olling.RollingFileAppender">
<!-- 过滤器,只记录WARN级别的⽇志 -->
<!-- 果⽇志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝⽇志。 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 设置过滤级别 -->
<level>ERROR</level>
<!-- ⽤于配置符合过滤条件的操作 -->
<onMatch>ACCEPT</onMatch>
<!-- ⽤于配置不符合过滤条件的操作 -->
<onMismatch>DENY</onMismatch>
</filter>
<!-- 最常⽤的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!--⽇志输出位置可相对、和绝对路径 -->
<fileNamePattern>
${log_dir}/error/%d{yyyy-MM-dd}/error-log.log
</fileNamePattern>
<!-- 可选节点,控制保留的归档⽂件的最⼤数量,超出数量就删除旧⽂件假设设置每个⽉滚动,且<maxHistory>是6,则只保存最近6个⽉的⽂件,删除之前的旧⽂件。注意,删除旧⽂件是,那些为了归档⽽创建的⽬录也会被删除 -->
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>
<!-- 设置⽇志输出格式 -->
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n
</pattern>
</encoder>
</appender>
<!-- WARN级别⽇志 appender -->
<appender name="WARN" class="ch.olling.RollingFileAppender">
<!-- 过滤器,只记录WARN级别的⽇志 -->
<!-- 果⽇志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝⽇志。 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 设置过滤级别 -->
<level>WARN</level>
<!-- ⽤于配置符合过滤条件的操作 -->
<onMatch>ACCEPT</onMatch>
<!-- ⽤于配置不符合过滤条件的操作 -->
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!--⽇志输出位置可相对、和绝对路径 -->
<fileNamePattern>${log_dir}/warn/%d{yyyy-MM-dd}/warn-log.log</fileNamePattern>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- INFO级别⽇志 appender -->
<appender name="INFO" class="ch.olling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/info/%d{yyyy-MM-dd}/info-log.log</fileNamePattern>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- DEBUG级别⽇志 appender -->
<appender name="DEBUG" class="ch.olling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/debug/%d{yyyy-MM-dd}/debug-log.log</fileNamePattern>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
<!-- TRACE级别⽇志 appender -->
<appender name="TRACE" class="ch.olling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>${log_dir}/trace/%d{yyyy-MM-dd}/trace-log.log</fileNamePattern>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- root级别 DEBUG -->
<root>
<!-- 打印debug级别⽇志及以上级别⽇志 -->
<level value="debug"/>
<!-- 控制台输出 -->
<appender-ref ref="console"/>
<!-- ⽂件输出 -->
<appender-ref ref="ERROR"/>
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="DEBUG"/>
<appender-ref ref="TRACE"/>
</root>
</configuration>
【java代码】
package dscn;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogBack {
private final Logger logger = Class());
public static void main(String[] args) {
LogBack logback = new LogBack();
}
private void testLog() {
logger.debug("print debug log.");
logger.info("print info log.");
<("print error log.");
}
}
【debug运⾏结果】
注意,如果是debug运⾏时,可以将上述的log_dir路径更改为⼀个本地的绝对路径。经过验证后,可以顺利的在控制台中打印⽇志,也可以顺利的⽣成⽇志⽂件。
2、⽇志⽂件
【在linux上运⾏jar包】
下⼀步验证⼀下在linux上是否可以正常输出⽇志。
注意,在linux上直接运⾏Jar包中的Main⽅法时,需要让系统能够到所依赖的jar包以及main⽅法,
使⽤Maven环境时,可以通过增加打包插件的⽅式来实现。完整的Maven配置⽂件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>logback</groupId>
<artifactId>logback</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
</dependencies>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。