【spring】--- logback.xml日志的使用

1.需要的相关pom依赖;

<slf4j.version>1.7.5</slf4j.version>
<logback.version>1.0.13</logback.version>

 
<!-- ################ 日志框架 begin ############### -->
        <!-- slf4j -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <!-- logback -->
<!--        <dependency>-->
<!--            <groupId>ch.qos.logback</groupId>-->
<!--            <artifactId>logback-core</artifactId>-->
<!--            <version>${logback.version}</version>-->
<!--        </dependency>-->

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>

<!--        <dependency>-->
<!--            <groupId>ch.qos.logback</groupId>-->
<!--            <artifactId>logback-access</artifactId>-->
<!--            <version>${logback.version}</version>-->
<!--        </dependency>-->
        <!-- ################ 日志框架 end ############### -->

2.logback.xml文件;

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

	<!-- 日志文件输出到目录 -->
	<property name="LOG_DIR" value="${catalina.base}/Logs" />

	<!-- 日志文件前缀 -->
	<property name="LOG_PREFIX" value="appname" />

	<!-- 默认日志输出格式 -->
	<property name="LOG_MSG"
			  value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p [%c-%L] - %m%n" />


	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${LOG_MSG}</pattern>
		</encoder>
	</appender>

	<!-- DEBUG日志输出 -->
	<appender name="DEBUG_LOG"
			  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_DIR}/${LOG_PREFIX}_debug.log</file>
		<!-- 临界值过滤器,过滤掉低于debug的日志-->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>DEBUG</level>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_DIR}/${LOG_PREFIX}_debug.%d{yyyy-MM-dd}.log
			</fileNamePattern>
		</rollingPolicy>
		<encoder>
			<pattern>${LOG_MSG}</pattern>
		</encoder>

	</appender>

	<!-- INFO日志输出 -->
	<appender name="INFO_LOG"
			  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_DIR}/${LOG_PREFIX}_info.log</file>
		<!-- 使用过滤器,仅仅接收info日志级别的信息到info日志,高于该级别的日志,也不进入 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_DIR}/${LOG_PREFIX}_info.%d{yyyy-MM-dd}.log
			</fileNamePattern>
		</rollingPolicy>
		<encoder>
			<pattern>${LOG_MSG}</pattern>
		</encoder>

	</appender>


	<!-- ERROR日志输出 -->
	<appender name="ERROR_LOG"
			  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_DIR}/${LOG_PREFIX}_error.log</file>
		<!-- 使用过滤器,仅仅接收error日志级别的信息到error日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_DIR}/${LOG_PREFIX}_error.%d{yyyy-MM-dd}.log
			</fileNamePattern>
		</rollingPolicy>
		<encoder>
			<pattern>${LOG_MSG}</pattern>
		</encoder>

	</appender>

	<!-- 关闭org包开头的的debug和info日志,不建议开启该配置,以便观察三方组件-->
	<logger name="org" level="INFO" />
	<logger name="io.netty" level="INFO" />
	

	<root level="DEBUG">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="DEBUG_LOG" />  <!-- 因为使用临界值过滤器,info,error等级别的日志,都会进入debug日志文件中,当root设置为debug的时候,所有的日志都会进入debug日志文件 -->
		<appender-ref ref="INFO_LOG" />
		<appender-ref ref="ERROR_LOG" />
	</root>

</configuration>

3.项目中具体使用;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static Logger logger = LoggerFactory.getLogger(TestDate.class);
logger.info("info:[{}]",变量);
logger.error("error");
logger.debug("debug");

4.可以参考;

可参考logback详解

### Logback-Spring.XMLLogback.XML 的区别 在 Spring Boot 中,`logback-spring.xml` 和 `logback.xml` 是两种不同的日志配置文件,它们的主要差异在于如何处理环境变量以及与 Spring 应用程序上下文的集成。 #### 文件位置和优先级 当应用程序启动时,Spring Boot 会自动查找名为 `logback-spring.xml` 或者 `logback.xml` 的资源文件来初始化日志记录器。如果两者都存在,则前者会被加载而不是后者[^1]。这意味着如果有更具体的 spring 版本化配置需求,应该首选使用带有 `-spring` 后缀的那个文件名。 #### 对 Spring 属性的支持 `logback-spring.xml` 可以访问由 Spring Environment 提供的所有属性,并且能够利用这些属性来进行动态的日志设置调整。例如,可以通过 `${}` 占位符语法引用来自 application.properties 或其他地方定义好的键值对数据[^2]: ```xml <configuration> <!-- 使用 Spring 环境中的属性 --> <property name="LOG_PATH" value="${app.log.path:/var/log/myapp}"/> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${LOG_PATH}/application.log</file> ... </appender> </configuration> ``` 相比之下,普通的 `logback.xml` 并不具备直接读取外部源所提供的参数的能力;它仅限于解析内部已知的一些固定占位符(比如 JVM 参数)。 #### 自动条件配置 另一个重要特性是,在 `logback-spring.xml` 中可以应用一些特殊的标签如 `<springProfile>` 来根据当前激活的 profile 实现有条件的日志逻辑切换[^3]: ```xml <configuration> <springProfile name="dev"> <logger name="com.example.myapp" level="DEBUG"/> </springProfile> <springProfile name="prod"> <logger name="com.example.myapp" level="INFO"/> </springProfile> </configuration> ``` 上述例子展示了根据不同运行模式改变特定包下输出级别的方式。而标准版则无法识别此类指令。 综上所述,虽然两个文件都能完成基本功能,但是为了充分利用 Spring Boot 所带来的灵活性及便利性,建议采用 `logback-spring.xml` 进行更为精细复杂的场景定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值