springboot2.1.0、logback简单使用

一)背景

至于为啥把现在这些springboot简单的功能重新编写一遍,一个方面是为了加深印象,并重新学习一下。一方面是这些功能都是项目中比较常用的,都是从真实项目中把功能剥离单点编写出来,也方便别人学习并使用。

 

二)说明

由于springboot的核心代码已经集成了相关的日志组件,所以就不需要在pom.xml中引入相关的jar了,至于为啥要重写logback文件,一方面是为了定义日志打印的格式,一方面可以把日志指定异步生成等,方便排查问题。

 

三)pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.oysept.springboot</groupId>
    <artifactId>oysept-springboot-logback</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>oysept-springboot-logback</name>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 

四)在resources下创建一个logback.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	
    <!-- 定义变量,日志文件名 -->
    <property name="appName" value="oysept-springboot-logback" />
    <property name="baseFile" value="oysept-springboot-logback"></property>
    <!-- 日志文件存放在根目录下 /app/oysept-springboot-logback/logs文件夹中-->
    <property name="rootPath" value="/app/oysept-springboot-logback/logs" />
    
    <!-- 日志打印级别 -->
    <property name="log.root.level" value="INFO"></property>
 
    <!-- 设置上下文名称 -->
    <contextName>${appName}</contextName>
	
    <!-- 把日志在控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%X{thread} [%date{yyyy-MM-dd HH:mm:ss.SSS}] %level %logger{36} %line - %msg%n</pattern>
            
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
 
    <!-- 文件输出日志 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${rootPath}/${baseFile}.log</File>
        <!-- 日志文件rolling策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${rootPath}/${baseFile}_%d{yyyy-MM-dd}.log.gz</FileNamePattern>
            <!-- 日志保留天数 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
 
        <!-- 日志输出格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%X{thread} [%date{yyyy-MM-dd HH:mm:ss.SSS}] %level %logger{36} %line - %msg%n</Pattern>
            
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
 
    <!-- 文件输出日志 (文件大小策略进行文件输出,每小时产生一个日志文件给异常监控平台进行分析) -->
    <appender name="ERRORFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${rootPath}/${baseFile}_error.log</File>
        <!-- 日志文件rolling策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${rootPath}/${baseFile}_error_%d{yyyy-MM-dd}.log.gz
            </FileNamePattern>
            <!-- 日志保留天数 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 日志输出格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%X{thread} [%date{yyyy-MM-dd HH:mm:ss.SSS}] %level %logger{36} %line - %msg%n</Pattern>
            
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
 
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>10000</queueSize>
        <appender-ref ref="FILE" />
    </appender>
 
    <logger name="org.springframework" additivity="false">
        <level value="INFO" />
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ASYNC" />
        <appender-ref ref="ERRORFILE" />
    </logger>
 
    <logger name="org.apache.commons" level="WARN">
        <appender-ref ref="ERRORFILE" />
    </logger>
 
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ASYNC" />
        <appender-ref ref="ERRORFILE" />
    </root>
</configuration>

 

五)添加日志打印样例

package com.oysept.springboot;

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

/**
 * springboot启动类
 * @author ouyangjun
 */
@SpringBootApplication
public class LogBackApplication {
	
    private final static Logger LOGGER = LoggerFactory.getLogger(LogBackApplication.class);

    public static void main(String[] args) {
        LOGGER.info("*************************LogBack Application Started begin*************************");
        SpringApplication.run(LogBackApplication.class, args);
        LOGGER.info("*************************LogBack Application Started end*************************");
    }
}

 

六)项目结构层级图(application.properties文件中只有server.port=8080)

 

七)运行LogBackApplication.java,会在根目录D:\app\oysept-springboot-logback\logs按日期生成日志文件

 

识别二维码关注个人微信公众号


 
本章完结,待续,欢迎转载!
 
本文说明:该文章属于原创,如需转载,请标明文章转载来源!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值