一、日志技术
1、日志
程序中的日志,是用来记录应用程序的运行信息、状态信息、错误信息的。
2、日志框架
|-------------|-----------------------------------------------------------------------------|
| JUL | 这是JavaSE平台提供的官方日志框架,也被称为JUL。配置相对简单,但不够灵活,性能较差。 |
| Log4j | 一个流行的日志框架,提供了灵活的配置选项,支持多种输出目标。 |
| Logback | 基于Log4j升级而来,提供了更多的功能和配置选项,性能由于Log4j。 |
| Slf4j | (Simple Logging Facade for Java)简单日志门面,提供了一套日志操作的标准接口及抽象类,允许应用程序使用不同的底层日志框架 |
3、Logback的使用
①引入依赖
XML
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.11</version>
</dependency>
②引入配置文件
可以通过ai生成:
XML
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %logger{50}: 最长50个字符(超出.切割) %msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
③记录日志
java
//定义日志记录对象
private static final Logger log = LoggerFactory.getLogger(LogTest.class);
@Test
public void testLog() {
log.debug("开始计算");
int sum=0;
int[] nums={1,5,3,2,1,4,5,4,6,7,4,34,2,23};
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
}
log.info("计算结果为:"+sum);
log.debug("计算结束");
}
lombok中提供的@Slf4j注解,可以简化定义日志记录器这步操作。添加了该注解,就相当于在类中定义了日志记录器,就下面这句代码:
private static Logger log = LoggerFactory. getLogger(Xxx. class);
启动测试,结果为:

④增加配置文件
常用的两种输出日志的位置:控制台、系统文件。
若需要输出日志到控制台,添加如下配置:
XML
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
</encoder>
</appender>
若需要输出到文件,添加下面的配置:
XML
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 日志文件输出的文件名, %i表示序号 -->
<FileNamePattern>D:/tlias-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
<!-- 最多保留的历史日志文件数量 -->
<MaxHistory>30</MaxHistory>
<!-- 最大文件大小,超过这个大小会触发滚动到新文件,默认为 10MB -->
<maxFileSize>10MB</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
</encoder>
</appender>
日志开关------(开启日志(ALL),取消日志(OFF))
XML
<!-- 日志输出级别 -->
<root level="ALL">
<!--输出到控制台-->
<appender-ref ref="STDOUT" />
<!--输出到文件-->
<appender-ref ref="FILE" />
</root>
4、日志级别
日志级别指的是日志信息的类型,日志都会分级别,使用方法:log.日志级别(".......")
|-----------|-----------------------------------------|
| 日志级别 | 说明 |
| trace | 迫踪,记录程序运行轨迹【使用很少】 |
| debug | 调试,记录程序调试过程中的信息,实际应用中一般将其视为最低级别]【使用较多】 |
| info | 记录一般信息,描述程序运行的关键事件,如:网络连接、操作【使用较多】 |
| warn | 记录潜在有害的情况【使用较多】 |
| error | 错误信息【使用较多】 |