设为首页 加入收藏

TOP

logback配置及使用
2019-05-12 02:25:47 】 浏览:136
Tags:logback 配置 使用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gavinguo1987/article/details/78027889

maven配置

<properties>

<logback.version>1.2.3</logback.version>

<slf4j.api.version>1.7.5</slf4j.api.version>

<junit.version>4.12</junit.version>

</properties>


<dependencies>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>${slf4j.api.version}</version>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

<version>${logback.version}</version>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-core</artifactId>

<version>${logback.version}</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>${junit.version}</version>

<scope>test</scope>

</dependency>


</dependencies>


logback.xml配置

<xmlversion="1.0"encoding="UTF-8">


<!-- debug=false启动时不打印logback信息 -->

<!-- scanPeriod为动态加载配置文件的时间间隔 -->

<configurationscan="true"scanPeriod="180 seconds">


<!-- 日志级别,按日志输出内容多少排序 -->

<!-- TRACE > DEBUG > INFO > WARN > ERROR -->



<!-- ===============静态变量=============== -->

<!-- 工程名 -->

<propertyname="project.name"value="TestWithMaven"/>


<!-- 日志文件输出目录 -->

<propertyname="log.base.path"value="logs"/>

<!-- 日志文件附加策略 -->

<propertyname="log.appender.append"value="true"/>

<!-- 多JVM往同一文件写策略 -->

<propertyname="log.appender.prudent"value="true"/>

<!-- 日志文件字符集 -->

<propertyname="log.charset"value="UTF-8"/>

<!-- 日志格式:2017-09-18 17:07:44.108 [ERROR] [main] log.b.LogB:15 - Error:

debuging in class Log B -->

<propertyname="log.format"

value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{200}.%method:%line - %msg %n"/>


<!-- 滚动日志每个文件大小 -->

<propertyname="rolling.log.max.file.size"value="100KB"/>

<!-- 滚动日志保留天数 -->

<propertyname="rolling.log.max.history"value="90"/>

<!-- 滚动日志总大小 -->

<propertyname="rolling.log.total.size.cap"value="20GB"/>

<!-- 滚动日志名称 -->

<propertyname="rolling.log.file.name"value="${log.base.path}/${project.name}-rolling"/>


<!-- 窗口滚动日志文件起始值 -->

<propertyname="window.rolling.log.min.index"value="1"/>

<!-- 窗口滚动日志文件起始值 -->

<propertyname="window.rolling.log.max.index"value="10"/>

<!-- 窗口滚动日志每个文件大小 -->

<propertyname="window.rolling.log.max.file.size"value="100KB"/>

<!-- 窗口滚动日志名称 -->

<propertyname="window.rolling.log.file.name"value="${log.base.path}/${project.name}-window"/>




<!-- ===============Appender配置=============== -->

<!-- 控制台输出 -->

<appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">

<target>System.out</target>

<encoder>

<pattern>${log.format}</pattern>

<charset>${log.charset}</charset>

</encoder>

</appender>


<!-- 文件输出 -->

<!-- <appender name="FILE" class="ch.qos.logback.core.FileAppender">

<append>${log.appender.append}</append>

<prudent>${log.appender.prudent}</prudent>

<file>${log.base.path}/${project.name}-file.log</file>

<encoder>

<pattern>${log.format}</pattern>

<charset>${log.charset}</charset>

</encoder>

</appender> -->


<!-- 基于时间的回滚文件输出 -->

<appendername="ROLLING"

class="ch.qos.logback.core.rolling.RollingFileAppender">

<append>${log.appender.append}</append>

<prudent>${log.appender.prudent}</prudent>

<File>${rolling.log.file.name}.log</File>

<rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>${rolling.log.file.name}-%d{yyyy-MM-dd}.log

</fileNamePattern>

<maxFileSize>${rolling.log.max.file.size}</maxFileSize>

<maxHistory>${rolling.log.max.history}</maxHistory>

<totalSizeCap>${rolling.log.total.size.cap}</totalSizeCap>

</rollingPolicy>

<!-- 必须指定,否则不会往文件输出内容 -->

<encoder>

<pattern>${log.format}</pattern>

<charset>${log.charset}</charset>

</encoder>

</appender>


<!-- 基于窗口的回滚文件输出 -->

<appendername="WINDOW"

class="ch.qos.logback.core.rolling.RollingFileAppender">

<append>${log.appender.append}</append>

<File>${window.rolling.log.file.name}.log</File>

<rollingPolicyclass="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

<fileNamePattern>${window.rolling.log.file.name}-%i.log.zip</fileNamePattern>

<minIndex>${window.rolling.log.min.index}</minIndex>

<maxIndex>${window.rolling.log.max.index}</maxIndex>

</rollingPolicy>

<triggeringPolicy

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

<maxFileSize>${window.rolling.log.max.file.size}</maxFileSize>

</triggeringPolicy>

<!-- 必须指定,否则不会往文件输出内容 -->

<encoder>

<pattern>${log.format}</pattern>

<charset>${log.charset}</charset>

</encoder>

</appender>



<!-- ===============Logger配置=============== -->

<!-- 所有logger的始祖是ROOT,默认会继承ROOT的配置,因此在其他logger中的日志会打印两次。 解决:logger的additivity属性设置为false -->

<loggername="log.a"additivity="false">

<levelvalue="TRACE"/>

<appender-refref="STDOUT"/>

</logger>

<loggername="log.b"additivity="false">

<levelvalue="DEBUG"/>

<appender-refref="STDOUT"/>

<appender-refref="ROLLING"/>

</logger>

<loggername="log.c"additivity="false">

<levelvalue="DEBUG"/>

<appender-refref="WINDOW"/>

</logger>


<rootlevel="DEBUG">

<appender-refref="STDOUT"/>

<appender-refref="WINDOW"/>

</root>


</configuration>



代码

package log;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


import log.a.LogA;

import log.b.LogB;

import log.c.LogC;


public class LogMain {

private staticfinal Logger log = LoggerFactory.getLogger(LogMain.class);


public staticvoid main(String[] args) {


LogA a = new LogA();

LogB b = new LogB();

LogC c = new LogC();


//TRACE < DEBUG < INFO < WARN < ERROR

log.trace("Main trace start");

log.debug("Main debug start");

log.info("Main info start");

log.warn("Main warn start");

log.error("Main error start");


a.logWithA();

b.logWithB();

c.logWithC();

}

}


-------------------------------------------------------------------------------------------------------------


package log.a;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class LogA {
private static final Logger log = LoggerFactory.getLogger(LogA.class);


public void logWithA() {
String wordI = "infoing in class Log A 中国";
String wordD = "debuging in class Log A 中国";


log.trace("Trace: {}", wordI);
log.debug("Debug: {}", wordD);
log.info("Info: {}", wordI);
}
}


-------------------------------------------------------------------------------------------------------------


package log.b;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


public class LogB {

private staticfinal Logger log = LoggerFactory.getLogger(LogB.class);


public void logWithB() {

String wordI ="infoing in class Log B 中国";

String wordD ="debuging in class Log B 中国";


log.debug("Debug: {}",wordD);

log.info("Info: {}",wordI);

log.error("Error: {}",wordD);

}

}


-------------------------------------------------------------------------------------------------------------


package log.c;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


public class LogC {

private staticfinal Logger log = LoggerFactory.getLogger(LogC.class);


public void logWithC() {

String wordI ="infoing in class Log C 中国";

String wordD ="debuging in class Log C 中国";


log.debug("Debug: {}",wordD);

log.info("Info: {}",wordI);

log.warn("Warn: {}",wordD);

}

}





】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇spark资源分配优化 下一篇linux修改root 用户密码

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目