Spring Boot的日志配置

本文介绍了Spring Boot的日志配置,包括如何配置log4j、log4j2和logback,详细阐述了在Spring Boot中实现日志管理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot的日志配置

1,简介

日志的级别:
 从低到高
 TRACE<DEBUG<INFO<WARN<ERROR<FATAL
 	如果设置位WARN 这,则低于WARN的不能输出
java web下有好几种日志框架:如logback,log4j,log4j2(slf4j并不是一种日志框架,它相当于定义了规范、标准、接口,实现这个规范的日志框架就能用slf4j调用)
log4j 
	是个很久的日志框架,目前springboot 1.3.x 一下版本才支持log4j, 以上版本都支持的 log4j2

2,实现

1)Spring Boot中使用log4j的配置

先去掉自带的logging
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
再添加log4j的包
<dependency>
	<groupId>commons-logging</groupId>
	<artifactId>commons-logging</artifactId>
</dependency>
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
</dependency>

在resources中新建log4j.properties 文件

在需要输出日志的类中添加
private static Logger logger = Logger.getLogger(HelloController.class);

logger.info("日志信息")

2)Spring Boot中使用log4j2的配置

先去掉自带的logging
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
引入log4j2的包
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

在resources中新建log4j2.xml 文件
编写log4j2.xml文件->这里不做编写了
 	
在配置文件中指定log4j2的位置
logging.config=classpath:log4j2.xml

使用
private static Logger logger = LogManager.getLogger(HelloController.class);
logger.info("日志信息")

3)Spring Boot中使用logback的配置

	springboot是自带logback的,可直接使用
	先配置logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false-->
<configuration scan="true" scanPeriod="10 seconds">
    <!--<include resource="org/springframework/boot/logging/logback/base.xml" 
        /> -->
    <contextName>Logback For Boss</contextName>
    
    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
    <property name="log.path" value="F:/locakback" />
    <!-- 定义日志文件 输入位置 -->
    <property name="logDir" value="F:/locakback/logbak" />

    <!-- 控制台输出日志 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
         <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%line:行号,%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


 <!--输出到文件-->
  <!-- 时间滚动日志到文件 -->
  <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在记录的日志文件的路径及文件名 -->
    <file>${logDir}/system.log</file>
    
 <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
   
    <!-- 日志记录器的滚动策略,按日期,按大小记录 
    1,先按日期记录日志,日期变化后,将前一天的日志文件重命名为xxxx%日期%索引
    2,如果日期没有变化,但是文件大小超过指定的size后,对文件进行分割重命名
    -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- 日志归档 -->
      <fileNamePattern>${logDir}/system.%d.%i.log</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>10MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
      <!--日志文件保留天数-->
      <maxHistory>30</maxHistory>
    </rollingPolicy>
  </appender>

    <!-- 日志级别-->
    <root level="INFO">
        <!-- 控制台输出 -->
        <appender-ref ref="STDOUT" />
        <!-- 文件输出 -->
        <appender-ref ref="LOGFILE" />
    </root>
<!-- sql日志输出-->
<logger name="druid.sql.Statement" level="INFO">
<appender-ref ref="STDOUT" />
</logger>

</configuration>

在application中配置
	logging
	  config: classpath:logback-spring.xml

具体使用如下
private final static Logger logger = LoggerFactory.getLogger(HelloController.class);
logger.info("日志信息");

也可用
slf4j 
	可以输出日志
	
SLF4J是简单的日志外观模式框架,抽象了各种日志框架例如LogbackLog4jCommons-logging和JDK自带的logging实现接口。它使得用户可以在部署时使用自己想要的日志框架。SLF4J是轻量级的,在性能方面几乎是零消耗的。

SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。
引入了lombok就可以使用@slf4j

	用法:
	类上加 @slf4j
	方法中直接log.info("日志信息");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值