网站首页 > java教程 正文
Logback是一个功能强大的Java日志框架,它是基于Log4j框架进行了改进升级,提供了更加丰富的高性性能日志处理支持。并且在SpringBoot中Logback提供了更加灵活的配置方式,我们可以通过XML或者是Groovy脚本对其进行配置。下面我们就来介绍一下关于Logback的操作配置。
创建 Logback 配置文件
Logback的日志配置文件通常被命名为logback.xml,一般是位于src/main/resources 目录中,包含了日志的输出格式、输出的位置、以及日志级别等信息的配置。如下所示。
<configuration>
<!-- 定义日志输出格式 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 定义日志输出位置和日志级别 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="console"/>
</root>
</configuration>
其中参数介绍
- <conversionRule>:定义日志输出格式的转换规则。
- <property>:定义配置属性,用于设置日志输出格式。
- <appender>:定义日志的输出目标,可以是控制台、文件、数据库等。
- <encoder>:定义日志的格式化方式,通常使用<pattern>元素指定格式模板。
- <root>:定义根日志记录器,设置日志级别和日志输出目标。
我们可以通过自己对于日志的需求来修改Logback文件中提供的各种配置项,用来定义不同的日志输出格式、输出位置等。例如,可以添加文件输出器,将日志输出到指定的文件中,也可以按照不同的日志级别进行输出,方便在生产环境定位问题。
日志记录器的使用
使用Logback框架来记录日志实现非常简单,只需要在需要的地方添加相应的调用方法就可以了。如下所示。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Example {
private static final Logger logger = LoggerFactory.getLogger(Example.class);
public void someMethod() {
// 记录不同级别的日志
logger.trace("Trace level message");
logger.debug("Debug level message");
logger.info("Info level message");
logger.warn("Warning level message");
logger.error("Error level message");
}
}
如何自定义一个appender?
自定义Appender是在Logback中中提供的高级使用方式,它允许将自定义的日志输出到指定的目标中,例如可以将日志输出到数据库中,消息队列中、或者是输出到远程日志存储中。如下所示,展示了如何将日志输出到自定义的控制台中。
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.Layout;
import ch.qos.logback.core.encoder.Encoder;
import ch.qos.logback.core.spi.DeferredProcessingAware;
public class CustomAppender<E> extends AppenderBase<E> {
private Encoder<E> encoder;
private Layout<E> layout;
@Override
protected void append(E eventObject) {
// 使用 Encoder 将日志事件格式化为字符串
String formattedEvent = encoder.encode(eventObject);
// 输出到控制台
System.out.print(formattedEvent);
// 输出到文件
// (这里省略了将日志输出到文件的逻辑)
}
@Override
public void start() {
// 验证配置是否正确
if (encoder == null) {
addError("No encoder set for the appender named [" + name + "].");
return;
}
if (layout == null) {
addError("No layout set for the appender named [" + name + "].");
return;
}
super.start();
}
@Override
public void stop() {
super.stop();
}
public void setEncoder(Encoder<E> encoder) {
this.encoder = encoder;
}
public void setLayout(Layout<E> layout) {
this.layout = layout;
}
}
在上面的例子中,创建了一个CustomAppender的类,它继承了Logback的AppenderBase基础类,并且在append()方法中,通过Encode而将日志的进行了格式化,然后将格式化之后的日志输出到控制台中。并且在start()方法中,也验证了配置方式的正确性如果没有设置 encoder 或 layout,则会抛出错误。如下所示就是在Logback的配置中需要添加的东西。
<configuration>
<!-- 定义自定义的 Appender -->
<appender name="customAppender" class="com.example.CustomAppender">
<!-- 设置 Encoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 将自定义的 Appender 添加到根日志记录器 -->
<root level="INFO">
<appender-ref ref="customAppender"/>
</root>
</configuration>
上面这个配置中,创建了customAppender的自定义日志处理Appender,而且设置了日志格式化的模式风格,通过配置文件将处理器添加到日志配置中。
总结
这样我们就完成了自定义的Appender的添加以及配置操作,当然除了将日志输出到文件、控制台中,我们还可以再Appender中添加数据库相关的逻辑、或者是消息中间件相关的逻辑,将日志记录到数据库中,由于篇幅有限,这里不展示记录到数据库中的操作,在下一篇分享中会为读者介绍如何通过Appender操作将日志写入到数据库或者消息中间件中。敬请期待。
- 上一篇: 日志框架选型,Logback 还是 Log4j2?
- 下一篇: Java日志框架二三事
猜你喜欢
- 2024-11-27 深入浅“粗”SpringBoot日志框架
- 2024-11-27 SpringBoot接入轻量级分布式日志框架(GrayLog)
- 2024-11-27 JAVA编程规范之日志规约
- 2024-11-27 阿里强制使用SLF4J日志框架的缘由
- 2024-11-27 杂谈 : 日志门户 slf4j 如何集成日志框架的
- 2024-11-27 tomcat各个日志文件的区别
- 2024-11-27 Mybatis 添加日志功能
- 2024-11-27 精通springcloud:分布式日志记录和跟踪
- 2024-11-27 阿里巴巴Java开发规范(4):日志规约
- 2024-11-27 「springboot」Slf4j日志框架的体系结构
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)