spring Boot logback的使用与配置

目录

什么是日志

什么是日志框架

日志框架的能力

常见日志框架

logback的使用与配置

日志输出到文件配置

扩展


什么是日志

  • 能够描述系统运行行状态的所有时间都可以算作日志  --> 用户下线  接口超时  数据库崩溃  

什么是日志框架

  • 是一套实现日志输出的工具包

日志框架的能力

  • 定制输出目标
  • 定制输出格式
  • 日志框架的选择
  • 携带上下文信息 (类路径、时间戳、线程、调用对象等等)
  • 运行选择性输出
  • 灵活的配置
  • 优异的性能

常见日志框架

JCL、jboos-logging、Log4j、Log4j2、SLF4j、JUL、Logback

logback的使用与配置

项目结构

pom.xml

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

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

测试类  @slf4j 注解的使用

package cn.bufanli.shell;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {ShellApplication.class}) //启动类
@Slf4j
public class ShellApplicationTests {

	@Test
	public void contextLoads() {
		String name = "bufanli";
		String pass = "123456";
		log.debug("debug.....");
		//日志中使用变量
		//占位符使用
		log.info("info...{} ---{}",name,pass);
		//拼接
		log.error("eroor..."+name+"---"+pass);
	}

}

控制台输出

日志输出到文件配置

日志输出格式:
		%d表示日期时间,
		%thread表示线程名,
		%-5level:级别从左显示5个字符宽度
		%logger{50} 表示logger名字最长50个字符,否则按照句点分割。 
		%msg:日志消息,
		%n是换行符
    -->
    %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

两种方式

application.properties 简单文件配置

logging.level.com.atguigu=trace


#logging.path=
# 不指定路径在当前项目下生成springboot.log日志
# 可以指定完整的路径;
#logging.file=G:/springboot.log

# 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件
logging.path=/spring/log

#  在控制台输出的日志的格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
# 指定文件中日志输出的格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n

logback-spring.xml xml复杂文件配置  区分info和error日志,每天产生一个日志文件,便于我们定位问题查找日志,不需要yml配置,文件名称固定放在resources根目录下

logback-spring.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <!--控制台输出日志-->
    <appender name="conlsoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!--打印日志的格式-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </layout>
    </appender>
    <!--info日志配制-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤掉error级别日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--如果是error就不執行appender的配置,不是就执行info信息保存到本地-->
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名  根目录logs/info.xxx.log-->
            <FileNamePattern>./logs/info/%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>
    </appender>
    <!--error日志配置-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤只输出error级别日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>./logs/error/%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>
    </appender>
    <!--引用上面的 appender-->
    <root level="info">
        <appender-ref ref="conlsoleLog" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>
</configuration>

执行test

error目录下日志文件

info目录下

扩展

使用LogBack日志可以把日志配置文件名成命名如下,不同的名称功能不同

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值