日志管理平台搭建手册(一)——Logback配置

日志,是开发和运维人员定位错误,分析应用使用情况的一种重要手段。开发中最常见的情景就是测试时,一旦程序出现了异常,就立马想到通过查看程序日志来定位问题所在。

目前的Java应用主流的日志框架有Log4J和Logback等。而Logback又是Log4J作者再设计开发的改进版,所以本系列使用Logback作为日志框架。

采用Intellij IDEA 2018.1作为开发工具,使用Maven做依赖管理,示例项目基于Spring Boot 2.0.1.RELEASE和Java 10。

1. 环境准备

首先在pom.xml中引入Logback的依赖:

<dependency>
    <groupId>ch.qos.logbackgroupId>
    <artifactId>logback-classicartifactId>
dependency>

在Spring Boot 2.0.1.RELEASE中,logback-classic的版本号为1.2.3.

2. 日志配置

在引用导入完成后,需要对Logback进行设置,Logback配置文件名称为logback.xml,放置在项目的resources目录下:

日志管理平台搭建手册(一)——Logback配置_第1张图片

配置文件具体内容如下:

xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <contextName>log-samplecontextName>

    
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{55} - %msg%npattern>
        encoder>
    appender>
    
    <appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>log-sample.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <fileNamePattern>log-sample-%d{yyyy-MM-dd}.%i.txtfileNamePattern>
            
            <maxFileSize>100MBmaxFileSize>
            <maxHistory>60maxHistory>
            <totalSizeCap>20GBtotalSizeCap>
        rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{55} - %msg%npattern>
        encoder>
        
        <append>trueappend>
    appender>

    
    <logger name="com.zxyankh.log.sample" level="debug"/>

    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="rolling"/>
    root>

configuration>

完成了logback.xml文件的编写之后,需要在Spring boot的配置文件application.properties或application.yml文件中指定logback配置文件的路径,在示例中,使用application.yml文件作为Spring boot的配置文件:

logging:
  config: classpath:logback.xml

3. 代码使用

现在Logback的配置已经完成,接下去就是在代码中使用Logback来完成日志的记录。简单起见,示例代码只是在启动类启动完成后加了一条日志输出,表明项目在何时启动完成:

package com.zxyankh.log.sample;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.time.Instant;

@SpringBootApplication
public class LogSampleApplication {

    private static final Logger LOGGER = LoggerFactory.getLogger(LogSampleApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(LogSampleApplication.class, args);

        LOGGER.info("Log Sample start finished at {}.", Instant.now());
    }
}

实际的输出结果如下:

第一条输出是Spring boot启动后的输出,第二条输出是添加在启动类启动方法调用之后的自定义输出。

由于刚才Logback的配置文件中也配置了日志文件的输出,所以可以在项目当前目录下看到名为log-sample.log的日志文件。

日志管理平台搭建手册(一)——Logback配置_第2张图片

4. 总结

以上就是最简单的Spring boot和logback的结合使用方式。虽然项目已经配置了控制台输出和写日志文件两种方式的日志记录方式,但对于大型应用来说这显然是不够的。每次登录不同的服务器查看应用日志文件,对于开发运维人员来说是一件很痛苦的事情,所以需要结合其他工具实现更完善的日志监控系统,接下去的文章将会介绍ELK(ElasticSearch + Logstash + Kibana)。




你可能感兴趣的:(Java)