java配置logback_logback配置和使用
发布日期:2021-06-24 01:38:43 浏览次数:4 分类:技术文章

本文共 2847 字,大约阅读时间需要 9 分钟。

简介

logback是由log4j创始人设计的又一个开源日志组件。当前分成三个模块:

logback-core是其它两个模块的基础模块。

logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API,使你可以很方便地更换成其它日志系统,如log4j或JDK14 Logging。

logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

配置

配置pom.xml

logback需要logback-core、logback-classic、slf4j-api、logback-access这4个依赖。其中logback-classic已经包含了logback-core和slf4j-api依赖,由于Maven依赖的传递性,所以我们只需导入logback-classic和logback-access依赖即可。

ch.qos.logback

logback-classic

1.3.0-alpha4

ch.qos.logback

logback-access

1.3.0-alpha4

初始化步骤

1. 在类路径中查找logback-test.xml文件。

2. 如果没有找到,则在类路径中查找logback.groovy文件。

3. 如果没有找到,则在类路径中查找logback.xml文件。

4. 如果没有找到,则尝试使用ServiceLoader加载classpath下META-INFservicesch.qos.logback.classic.spi.Configurator文件中配置的com.qos.logback.classic.spi.Configurator实现类(Configurator文件内容为实现类的完全限定类名)。

5. 如果还是没有找到,则会加载默认配置,日志默认会输出到控制台,也就是使用BasicConfigurator,BasicConfigurator也是com.qos.logback.classic.spi.Configurator接口的实现类。

public class BasicConfigurator extends ContextAwareBase implements Configurator {

public BasicConfigurator() {

}

public void configure(LoggerContext lc) {

addInfo("Setting up default configuration.");

ConsoleAppender ca = new ConsoleAppender();

ca.setContext(lc);

ca.setName("console");

LayoutWrappingEncoder encoder = new LayoutWrappingEncoder();

encoder.setContext(lc);

// same as

// PatternLayout layout = new PatternLayout();

// layout.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");

TTLLLayout layout = new TTLLLayout();

layout.setContext(lc);

layout.start();

encoder.setLayout(layout);

ca.setEncoder(encoder);

ca.start();

Logger rootLogger = lc.getLogger(Logger.ROOT_LOGGER_NAME);

rootLogger.addAppender(ca);

}

}

使用logback.xml

%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %msg%n

${filePath}app.log

%date [%level] [%thread] %logger{80} [%file : %line] %msg%n

${filePath}app.log%d{yyyy-MM-dd}.log

30

3GB

${filePath}other.log

${filePath}other.log%d{yyyy-MM-dd}%i.log

1KB

60

20GB

%date [%level] [%thread] %logger{80} [%file : %line] %msg%n

测试:

public class HelloService {

private final static Logger logger = LoggerFactory.getLogger(HelloService.class);

public static void main(String[] args) {

//根据logback.xml中配置的日志级别,TRACE级别的日志将不会输出,只会输出DEBUG及以上级别的日志。

//TRACE < DEBUG < INFO < WARN < ERROR

logger.trace("---------------trace---------------");

logger.debug("---------------debug---------------");

logger.info("---------------info---------------");

logger.warn("---------------warn---------------");

logger.error("---------------error---------------");

}

}

常用技巧

1. 使用占位符

logger.debug("我是" + name + ",我今年" + age + "岁,很高兴认识你!");//普通方式

logger.debug("我是{},我今年{}岁,很高兴认识你!", name, age);//占位符方式(推荐)

当debug日志被禁用时,普通方式中,参数依然会被构造拼接,而在占位符方式中,参数不会进行构造拼接。

2. 使用时应该使用slf4j的API而不是使用logback的API(依赖日志门面,而不是依赖具体的日志实现,便于更换其他日志框架)

3. 自动重新加载配置文件

元素的scan属性设置为true,logback会定时的扫描配置文件,如果配置文件发生了更改,将自动重新加载配置文件。默认每分钟扫描一次,可以设置scanPeriod属性来指定扫描间隔。

...

转载地址:https://blog.csdn.net/weixin_29306261/article/details/114717343 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java js滑动列表_js实现列表向上无限滚动
下一篇:java 缓冲流 刷新_java 缓冲流 Buffer

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月02日 20时13分37秒