通常我们希望日志文件自定义输出位置,并且每天的日志放在一个文件里,有时候可能需要将 info 的日志和 error 的日志分开放,毕竟我们更关注 error 的日志。
可以通过下面一个简单的配置文件实现!
pom.xml
application.yml
在reources目录下创建 logback.xml
注意修改 contextName 和 logPath的值(6-7行),还有日志打包的范围(77行和73行)
通常有两种方法,一种是引入 lombok 依赖,使用在类上加 @Slfj 注解,然后在方法里直接使用 log.info(""); 这种;还有一种是传统方法,创建 Logger 实例,如下代码
111
可以通过下面一个简单的配置文件实现!
一、logback配置
pom.xml
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>org.codehaus.janino</groupId>
- <artifactId>janino</artifactId>
- <version>3.0.7</version>
- </dependency>
application.yml
- logging:
- config: classpath:logback.xml
在reources目录下创建 logback.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration scan="true" scanPeriod="60 seconds" debug="true" >
- <!-- <springProperty scope="context" name="contextName" source="spring.application.name"/>-->
- <!-- <springProperty scope="context" name="logPath" source="logback.logpath"/>-->
- <property name="contextName" value="Log-Demo" />
- <property name="logPath" value="D:/log2" />
- <contextName>${contextName}</contextName>
- <property name="LOG_HOME" value="${logPath}/${contextName}" />
- <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %X{reqId} %X{serverIp} %X{serverName} %-5level %logger{100} - %msg%n" />
- <!-- info日志 appender -->
- <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <!-- 按天回滚 daily -->
- <fileNamePattern>${LOG_HOME}/${contextName}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
- <!-- 日志最大的历史 30天 -->
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>${LOG_PATTERN}</pattern>
- <charset class="java.nio.charset.Charset">UTF-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
- <level>INFO</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
- <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <FileNamePattern>${LOG_HOME}/${contextName}-warn.%d{yyyy-MM-dd}.log</FileNamePattern>
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>${LOG_PATTERN}</pattern>
- <charset class="java.nio.charset.Charset">UTF-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
- <level>WARN</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
- <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <FileNamePattern>${LOG_HOME}/${contextName}-error.%d{yyyy-MM-dd}.log</FileNamePattern>
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>${LOG_PATTERN}</pattern>
- <charset class="java.nio.charset.Charset">UTF-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
- <level>ERROR</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>${LOG_PATTERN}</pattern>
- <charset class="java.nio.charset.Charset">UTF-8</charset>
- </encoder>
- </appender>
- <logger name="com.example.demo" level="DEBUG"/>
- <logger name="org.springframework" level="INFO"/>
- <!--日志打印的包的范围,及分类日志文件存储 -->
- <logger name="com.example.demo" additivity="false">
- <level value="DEBUG" />
- <appender-ref ref="STDOUT"/>
- <appender-ref ref="ERROR"/>
- <appender-ref ref="WARN"/>
- <appender-ref ref="INFO" />
- </logger>
- <root level="INFO" additivity="false">
- <appender-ref ref="STDOUT" />
- </root>
- </configuration>
注意修改 contextName 和 logPath的值(6-7行),还有日志打包的范围(77行和73行)
二、日志输出
通常有两种方法,一种是引入 lombok 依赖,使用在类上加 @Slfj 注解,然后在方法里直接使用 log.info(""); 这种;还有一种是传统方法,创建 Logger 实例,如下代码
- package com.example.demo.controller;
- import lombok.extern.slf4j.Slf4j;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- @RestController
- @Slf4j //方法一
- @RequestMapping("/test")
- public class MainController {
- // private static Logger log = LoggerFactory.getLogger(MainController.class); //方法二
- @GetMapping("/info")
- public String info() {
- log.info("这是一条info级别的日志");
- return "info";
- }
- @GetMapping("/warn")
- public String warning() {
- log.warn("这是一条warning级别的日志");
- return "warning";
- }
- @GetMapping("/error")
- public String error() {
- log.error("这是一条error级别的日志");
- return "error";
- }
- }
111
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏