logback配置及使用
来源:互联网 发布:linux ping 超时时间 编辑:程序博客网 时间:2024/06/04 19:21
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 Loggerlog = 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 Loggerlog = 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 Loggerlog = 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);
}
}
- logback配置及使用
- logback配置及使用
- Logback 使用配置及问题
- logback的简单配置及使用
- Log4j 与 logback对比、及使用配置
- Log4j 与 logback对比、及使用配置
- LogBack配置及注意事项
- 【LogBack】logback日志配置及日志分离
- 配置httpclient使用logback
- logback配置与使用
- logback使用配置说明
- logback配置和使用
- 日志处理Log4j 与 logback对比、及使用配置
- logback常用配置及说明
- slf4j+logback配置及详解
- Logback介绍及配置使用方法
- slf4j+logback配置及详解
- logback学习与配置使用
- thymeleaf模板引擎调用java类中的方法(附源码)
- vmware12 的kernel module updater解决方法
- C++传值,传址,引用的区别
- 多线程基础学习二:Runnable基础学习
- springMvc+mybatis事务管理不起作用解决
- logback配置及使用
- 【机器学习】先验概率、后验概率、贝叶斯公式、 似然函数
- 优秀网站分享
- Linux下SGX的使用(1)-makefile阅读
- 反向传播算法推导
- python的数据类型
- tp5重构了BLOG有兴趣的点点
- Java包装类
- Resources的getDrawable(int id)方法源码详解