java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > logback-spring.xml配置

logback-spring.xml配置解析(最新整理)

作者:☆池鱼不吃鱼

logback-spring.xml用于配置Spring Boot项目日志,定义输出格式、路径、级别,支持动态参数读取(如SpringProperty),实现日志隔离与滚动策略(按天+大小),并通过logger继承机制控制日志输出目的地,对logback-spring.xml配置相关知识感兴趣的朋友一起看看吧

logback-spring.xml 文件是 Spring Boot 项目中用于配置日志框架 Logback 的配置文件。它定义了日志的输出格式、输出位置、日志级别等信息。
以下是整个文件的结构化解释:

 一、全局配置

<configuration scan="true" scanPeriod="60 seconds" debug="false">

 二、变量定义与读取

1. 从 Spring 上下文中读取配置(如 bootstrap.yml)

<springProperty scope="context" name="logPath" source="logging.path" defaultValue="../logs"/>
<springProperty scope="context" name="logLevelRoot" source="logging.level.root" defaultValue="INFO"/>
<springProperty scope="context" name="logLevelTrade" source="logging.level.trade" defaultValue="INFO"/>
<springProperty scope="context" name="logLevelSign" source="logging.level.sign" defaultValue="INFO"/>

2. 自定义常量

<property name="moduleid" value="8176"/>
<property name="modulename" value="IALLO_GATEWAY"/>

三、Appender 定义(日志输出目的地)

1. 控制台输出:console

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%X{bizSeqNo}][%level][%thread] - [${moduleid}][${modulename}]%m%n</pattern>
    </encoder>
</appender>

2. 主日志文件:INFO

<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logPath}/${moduleid}_${modulename}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
		<fileNamePattern>${logPath}/${moduleid}_${modulename}.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
		<maxFileSize>500MB</maxFileSize>
		<MaxHistory>30</MaxHistory>
	</rollingPolicy>
    <encoder>...</encoder>
</appender>

3. 自定义日志文件:TRADE_INFO

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

四、Logger 定义(日志记录器)

1. 根日志记录器:root

<root level="${logLevelRoot}">
    <appender-ref ref="console"/>
    <appender-ref ref="INFO"/>
</root>

2. 自定义日志记录器:trade

<logger name="trade" level="${logLevelTrade}" additivity="false">
    <appender-ref ref="TRADE_INFO"/>
</logger>

五、典型日志使用方式(Java 示例)

private static final Logger tradeLogger = LoggerFactory.getLogger("trade");
private static final Logger signLogger = LoggerFactory.getLogger("signLog");
tradeLogger.info("这是一个交易日志");
signLogger.warn("这是一个签约警告");

六:注意项

七:完整示例代码

<configuration scan="true" scanPeriod="60 seconds" debug="false">
	<!-- 通过spring上下文获取对应的配置信息 -->
	<springProperty scope="context" name="logPath" source="logging.path" defaultValue="../logs"/>
	<!-- 获取当前启动应用的日志级别(取自bootstrap.yml/bootstrap.properties文件) -->
	<springProperty scope="context" name="logLevelRoot" source="logging.level.root" defaultValue="INFO"/>
	<!-- 获取当前应用的监控日志级别(取自bootstrap.yml/bootstrap.properties文件) -->
	<springProperty scope="context" name="logLevelTrade" source="logging.level.trade" defaultValue="INFO"/>
	<springProperty scope="context" name="logLevelSign" source="logging.level.sign" defaultValue="INFO"/>
	<!-- 定义日志文件常量 -->
	<property name="moduleid" value="8176"/>
	<property name="modulename" value="IALLO_GATEWAY"/>
	<!-- ConsoleAppender 控制台输出日志 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%X{bizSeqNo}][%level][%thread] - [${moduleid}][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- INFO级别日志 appender -->
	<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${moduleid}_${modulename}.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/${moduleid}_${modulename}.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
			<maxFileSize>500MB</maxFileSize>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%X{bizSeqNo}][%thread][%level][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- INFO级别日志 appender -->
	<appender name="TRADE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${moduleid}_${modulename}_tradeinfo.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/${moduleid}_${modulename}_tradeinfo.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
			<maxFileSize>500MB</maxFileSize>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%level][%thread][${moduleid}][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- INFO级别日志 appender -->
	<appender name="SIGN_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logPath}/${moduleid}_${modulename}_signinfo.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${logPath}/${moduleid}_${modulename}_signinfo.log.%d{yyyy-MM-dd}-%i</fileNamePattern>
			<maxFileSize>500MB</maxFileSize>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%level][%thread][${moduleid}][${modulename}]%m%n</pattern>
		</encoder>
	</appender>
	<!-- root级别 INFO -->
	<root level="${logLevelRoot}">
		<appender-ref ref="console"/>
		<appender-ref ref="INFO"/>
	</root>
	<!-- 日志监控 -->
	<logger name="trade" level="${logLevelTrade}" additivity="false">
		<appender-ref ref="TRADE_INFO"/>
	</logger>
	<logger name="signLog" level="${logLevelSign}" additivity="false">
		<appender-ref ref="SIGN_INFO"/>
	</logger>
</configuration>

到此这篇关于logback-spring.xml配置解析(最新整理)的文章就介绍到这了,更多相关logback-spring.xml配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文