springboot中使用logback记录日志

springboot中使用logback记录日志

日志级别

四个常用的日志级别,由高到低依次如下:

  • ERROR:记录错误信息
  • WARNING:记录程序运行过程中的潜在问题
  • INFO:程序正常执行记录的信息
  • DEBUG:调试程序记录的详细信息

如果日志级别为DEBUG,那么低于DEBUG级别的日志将不会输出,以此类推。

logback配置及使用

logback是一个日志框架(https://logback.qos.ch/index.html),官网描述为“流行框架log4j的后继者”,spring-boot-starter-parent依赖中已经包含了所需的依赖,直接配置即可使用。

logback配置文件如下,都有注释。

<?xml version="1.0" encoding="UTF-8"?>
<!--定期检查配置文件如发生更改则重新加载,scanPeriod 为检查配置文件的周期-->
<configuration scan="true" scanPeriod="10 seconds">
    <!--日志输出策略,name 表示策略名称,class为策略类型ConsoleAppender表示输出到控制台-->
    <appender name="CONSOLE"
              class="ch.qos.logback.core.ConsoleAppender">
        <!--非必须,指定appender的过滤级别-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder>
			<!--日志信息格式-->
			<!--%date 时间;%-5level日志级别,左对齐一共占5位;%logger{60} 日志所在类;%msg日志信息;%n换一行-->
            <pattern>%date [%-5level] %logger{60} %msg%n</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
	<!--日志输出策略,name 表示策略名称,class为策略类型RollingFileAppender表示输出文件-->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!--日志文件的输出路径及文件名-->
        <File>D:/log/app.log</File>
        <encoder>
            <pattern>%date [%-5level] %logger{60} %msg%n</pattern>
        </encoder>
		<!--日志的分割策略,TimeBasedRollingPolicy 表示按天分割-->
        <rollingPolicy  class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--分割后的日志文件名-->
            <fileNamePattern>D:/log/app.log.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 保留 30 天日志 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>
	<!--指定某一个包或类的日志输出,additivity表示是否向上传递,即是否打印更高级别的日志-->
    <logger name="com.example.demo03.service" level="DEBUG" additivity="false" />
	<!--根日志,level:日志输出级别-->
    <root level="INFO">
		<!--引用日志输出策略-->
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

将配置文件拷贝到springboot项目的resource目录下,在springboot配置文件中指定位置:

logging:
  config: classpath:logback-spring.xml

使用方法如下:

	//定义Logger对象,声明来自哪一个类
    private static final Logger log = LoggerFactory.getLogger(BookController.class);

    @GetMapping("/getbook")
    public Book get(Integer id){
        log.info("查找id="+id+"的book");
        return bookService.getBookById(id);
    }

**注意:**叫Logger的类有很多,要用SLF4j包的

也可以用lombok提供的@SLF4j注解生成Logger对象,@SLF4j注解作用在类上,会自动创建一个当前类的Logger对象

@Slf4j
@RestController
public class BookController {
    @Autowired
    private BookService bookService;

    @GetMapping("/getbook")
    public Book get(Integer id){
        log.info("查找id="+id+"的book");
        return bookService.getBookById(id);
    }
}

版权声明:本文为qq_52450582原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。