@Slf4j 如何实现日志输入到外部文件

@Slf4j实现日志输入到外部文件

1. 添加一个配置文件

\src\main\resources\logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="10 seconds">

<contextName>logback</contextName>

<!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->

<property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />

<!-- 定义日志存储的路径,不要配置相对路径 -->

<property name="FILE_PATH" value="C:/tmp/spring-log.%d{yyyy-MM-dd}.%i.log" />

<!-- 控制台输出日志 -->

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">

<!-- 日志级别过滤INFO以下 -->

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">

<level>INFO</level>

</filter>

<encoder>

<!-- 按照上面配置的LOG_PATTERN来打印日志 -->

<pattern>${LOG_PATTERN}</pattern>

</encoder>

</appender>

<!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->

<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>${FILE_PATH}</fileNamePattern>

<!-- keep 15 days' worth of history -->

<maxHistory>30</maxHistory>

<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

<!-- 日志文件的最大大小 -->

<maxFileSize>2MB</maxFileSize>

</timeBasedFileNamingAndTriggeringPolicy>

<!-- 超出删除老文件 -->

<totalSizeCap>1GB</totalSizeCap>

</rollingPolicy>

<encoder>

<pattern>${LOG_PATTERN}</pattern>

</encoder>

</appender>

<!-- project default level -->

<logger name="net.sh.rgface.serive" level="ERROR" />

<!-- 日志输出级别 -->

<root level="INFO">

<appender-ref ref="console" />

<appender-ref ref="rollingFile" />

</root>

</configuration>

直接在代码中使用

package com.zz.controller;

import lombok.extern.slf4j.Slf4j;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

@Slf4j

public class LogBackController {

@GetMapping("/logtest1")

public String test1(){

log.debug("debug测试日志消息");

log.info("info 测试日志信息");

log.error("info 测试日志信息");

log.warn("warn 测试日志信息");

return "ok";

}

}

运行结果:

在这里插入图片描述

@Slf4j日志文件打印和输出文件

首先配置lombok

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.16.18</version>

<scope>provided</scope>

</dependency>

添加一个配置文件

\src\main\resources\logback-spring.xml。设置为每天生成一个文件。

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="10 seconds">

<contextName>logback</contextName>

<!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->

<property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />

<!-- 定义日志存储的路径,不要配置相对路径 -->

<property name="FILE_PATH" value="E:/IDEAproject/INFO/cloud.%d{yyyy-MM-dd}.%i.log" />

<!-- 控制台输出日志 -->

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">

<!-- 日志级别过滤INFO以下 -->

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">

<level>INFO</level>

</filter>

<encoder>

<!-- 按照上面配置的LOG_PATTERN来打印日志 -->

<pattern>${LOG_PATTERN}</pattern>

</encoder>

</appender>

<!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->

<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>${FILE_PATH}</fileNamePattern>

<!-- keep 15 days' worth of history -->

<maxHistory>30</maxHistory>

<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

<!-- 日志文件的最大大小 -->

<maxFileSize>2MB</maxFileSize>

</timeBasedFileNamingAndTriggeringPolicy>

<!-- 超出删除老文件 -->

<totalSizeCap>1GB</totalSizeCap>

</rollingPolicy>

<encoder>

<pattern>${LOG_PATTERN}</pattern>

</encoder>

</appender>

<!-- project default level -->

<logger name="net.sh.rgface.serive" level="ERROR" />

<!-- 日志输出级别 -->

<root level="INFO">

<appender-ref ref="console" />

<appender-ref ref="rollingFile" />

</root>

</configuration>

方法中的使用

@Service

@Slf4j

public class TestService {

public void test(String name){

log.info("{}-->启动任务",name);

name = "李四";

log.info("{}-->任务结束",name);

try {

int a = 0;

a = a/0;

}catch (Exception e){

log.error(e.getMessage());

}

}

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

以上是 @Slf4j 如何实现日志输入到外部文件 的全部内容, 来源链接: utcz.com/p/251854.html

回到顶部