Spring Boot配置文件特定的日志记录示例

Spring Boot为单独的运行时环境/配置文件提供了单独的日志记录配置支持。例如,我们可以在环境中使用某些日志配置,在环境中使用其他配置。developmentproduction

特定于环境或配置文件的日志记录配置只能使用logback。其他日志记录提供程序(例如log4j2)不支持它。

1.语法– springProfile标签

在文件夹中创建logback-spring.xml文件,'/resources'并使用<springProfile>标签提供特定于配置文件的日志记录配置。

springProfile标记使我们可以根据活动的Spring概要文件有选择地包括或排除配置部分。它的name属性允许使用简单的配置文件名称或复杂的配置文件表达式。

<springProfile name="prod">
	<!-- configuration to be enabled when the "prod" profile is active -->
</springProfile>

<springProfile name="dev | prod">
	<!-- configuration to be enabled when the "dev" or "prod" profiles are active -->
</springProfile>

<springProfile name="!prod">
	<!-- configuration to be enabled when the "prod" profile is not active -->
</springProfile>

2.配置文件特定的日志记录示例

在给定的日志配置中,我们只想在localdev环境中使用控制台和文件日志。在高架环境(例如产品)中,我们只想使用文件记录。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <property name="LOG_FILE" value="c:/temp/spring.log}"/>
  <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
 
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
      <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>
    <file>${LOG_FILE}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${LOG_FILE}.%d</fileNamePattern>
    </rollingPolicy>
  </appender>
 
  <springProfile name="local | dev">
  	<logger name="org.springframework" level="DEBUG" additivity="false">
	    <appender-ref ref="CONSOLE" />
	</logger>
    <root level="DEBUG">
      <appender-ref ref="CONSOLE" />
      <appender-ref ref="FILE" />
    </root>
  </springProfile>

  <springProfile name="prod">
    <root level="INFO">
      <appender-ref ref="FILE" />
    </root>
  </springProfile>

  <springProfile name="!local & !dev & !prod">
    <root level="INFO">
      <appender-ref ref="FILE" />
    </root>
  </springProfile>
 
</configuration>

3.主动Spring轮廓

要激活特定的Spring轮廓,我们可以在中指定它application.properties

spring.profiles.active=dev

或者我们可以在以jar文件启动spring boot应用程序时将其作为运行时参数传递。

$ java -jar \target\my-app.jar -Dspring.profiles.active=dev

注意:确保将应用程序启动参数(args)传递给SpringApplication.run()method。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@SpringBootApplication
public class Application 
{
	public static void main(String[] args) 
	{
		SpringApplication.run(Application.class, args);
		
		log.info("Simple log statement with inputs {}, {} and {}", 1, 2, 3);
	}
}

请让我回答有关Spring Boot中特定Logback Profile的配置的问题。

saigon has written 1445 articles

Leave a Reply