logback配置

本文介绍了logback的基本概念,它由log4j创始人设计,分为logback-core、logback-classic和logback-access三个模块。logback-classic是log4j的改良版,且完全支持SLF4J API。接着详细讲解了如何配置logback,包括创建logback.xml文件,设置configuration标签,定义全局变量,配置不同级别的日志输出到控制台和文件,以及logger和root标签的使用。

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

1.logback简介

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

2.logback配置

2.1 创建一个xml文件(logback.xml)

创建一个logback.xml文件,用于进行logback日志的配置

2.2 创建configuration标签

<?xml version="1.0" encoding="UTF-8"?>
<!-- 告诉logback,定期扫描配置是否发生变化,发生变化后,自动加载进来,每隔60秒扫描一次 -->
<configuration scan="true" scanPeriod="60 seconds"
	debug="false">

</configuration>

2.3 创建四个全局变量

%d{yyyy-MM-dd HH:mm:ss.SSS} :时间格式
[%thread]:输出是哪一个线程执行的
%-5level :左移五位输出是哪一个级别的日志
%logger{50}-%msg:输出是哪一个package下面的信息
%n:换行

    <!-- 定义参数常量 -->
    <!-- 日志级别:TRACE<DEBUG<INFO<WARN<ERROR -->
    <property name="log.level" value="debug" />
    <!-- 文件保留时间 -->
    <property name="log.maxHistory" value="30" />
    <!-- 日志文件根路径 -->
    <!-- ${catalina.base}:存储的是tomcat实例的根目录 -->
    <property name="log.filePath"
    	value="${catalina.base}/logs/webapps" />
    <!-- 日志展现格式 -->
    <property name="log.pattern"
    	value="%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level %logger{50}-%msg%n" />

2.4 配置四个日志输出=>appender

2.4.1 配置输出到控制台

<!-- 用来定义输出介质是什么,输出到那个地方 控制台设置 -->
	<appender name="consoleAppender"
		class="ch.qos.logback.core.ConsoleAppender">
		<!-- 将event事件转化为字符串并输出到相应的文件中 -->
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
	</appender>

2.4.2 配置DEBUG,输出到日志文件

	<!-- DEBUG -->
	<appender name="debugAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 文件路径 -->
		<file>${log.filePath}/debug.log</file>
		<!-- 滚动策略 基于事件滚动 -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件名称 -->
			<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz
			</fileNamePattern>
			<!-- 文件最大保存历史数量 -->
			<MaxHistory>${log.maxHistory}</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<!-- 过滤掉不是debug level的日志,只记录debug的日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>DEBUG</level>
			<onMatch>ACCEPT</onMatch>
			<onMismach>DENY</onMismach>
		</filter>
	</appender>

2.4.3 配置INFO,输出到日志文件

	<!-- INFO -->
	<appender name="infoAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 文件路径 -->
		<file>${log.filePath}/info.log</file>
		<!-- 滚动策略 基于事件滚动 -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件名称 -->
			<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
			</fileNamePattern>
			<!-- 文件最大保存历史数量 -->
			<MaxHistory>${log.maxHistory}</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismach>DENY</onMismach>
		</filter>
	</appender>

2.4.4 配置ERROR,输出到日志文件

	<!-- ERROR -->
	<appender name="errorAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 文件路径 -->
		<file>${log.filePath}/error.log</file>
		<!-- 滚动策略 基于事件滚动 -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件名称 -->
			<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz
			</fileNamePattern>
			<!-- 文件最大保存历史数量 -->
			<MaxHistory>${log.maxHistory}</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismach>DENY</onMismach>
		</filter>
	</appender>

2.5 配置logger标签,监听配置

<!-- 用来存放日志对象,同时告诉logback需要关注哪个包下面的日志信息,以及关注哪个级别以上的日志信息 -->
	<!-- additivity="true" :将日志也写在控制台上 -->
	<logger name="com.cn.xcc" level="${log.level}"
		additivity="true">
		<!-- 和文件相关的appender进行绑定 -->
		<appender-ref ref="debugAppender" />
		<appender-ref ref="infoAppender" />
		<appender-ref ref="errorAppender" />
	</logger>

2.6 配置root标签

	<!-- 配置输出到控制台的appender -->
	<root level="info">
		<appender-ref ref="consoleAppender" />
	</root>

3.配置汇总

<?xml version="1.0" encoding="UTF-8"?>
<!-- 告诉logback,定期扫描配置是否发生变化,发生变化后,自动加载进来,每隔60秒扫描一次 -->
<configuration scan="true" scanPeriod="60 seconds"
	debug="false">
	<!-- 定义参数常量 -->
	<!-- 日志级别:TRACE<DEBUG<INFO<WARN<ERROR -->
	<property name="log.level" value="debug" />
	<!-- 文件保留时间 -->
	<property name="log.maxHistory" value="30" />
	<!-- 日志文件根路径 -->
	<!-- ${catalina.base}:存储的是tomcat实例的根目录 -->
	<property name="log.filePath"
		value="${catalina.base}/logs/webapps" />
	<!-- 日志展现格式 -->
	<property name="log.pattern"
		value="%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread]%-5level %logger{50}-%msg%n" />
	<!-- 用来定义输出介质是什么,输出到那个地方 控制台设置 -->
	<appender name="consoleAppender"
		class="ch.qos.logback.core.ConsoleAppender">
		<!-- 将event事件转化为字符串并输出到相应的文件中 -->
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
	</appender>
	<!-- DEBUG -->
	<appender name="debugAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 文件路径 -->
		<file>${log.filePath}/debug.log</file>
		<!-- 滚动策略 基于事件滚动 -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件名称 -->
			<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz
			</fileNamePattern>
			<!-- 文件最大保存历史数量 -->
			<MaxHistory>${log.maxHistory}</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<!-- 过滤掉不是debug level的日志,只记录debug的日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>DEBUG</level>
			<onMatch>ACCEPT</onMatch>
			<onMismach>DENY</onMismach>
		</filter>
	</appender>
	<!-- INFO -->
	<appender name="infoAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 文件路径 -->
		<file>${log.filePath}/info.log</file>
		<!-- 滚动策略 基于事件滚动 -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件名称 -->
			<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
			</fileNamePattern>
			<!-- 文件最大保存历史数量 -->
			<MaxHistory>${log.maxHistory}</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismach>DENY</onMismach>
		</filter>
	</appender>
	<!-- ERROR -->
	<appender name="errorAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 文件路径 -->
		<file>${log.filePath}/error.log</file>
		<!-- 滚动策略 基于事件滚动 -->
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 文件名称 -->
			<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz
			</fileNamePattern>
			<!-- 文件最大保存历史数量 -->
			<MaxHistory>${log.maxHistory}</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismach>DENY</onMismach>
		</filter>
	</appender>
	<!-- 用来存放日志对象,同时告诉logback需要关注哪个包下面的日志信息,以及关注哪个级别以上的日志信息 -->
	<!-- additivity="true" :将日志也写在控制台上 -->
	<logger name="com.xsl.o2o" level="${log.level}"
		additivity="true">
		<!-- 和文件相关的appender进行绑定 -->
		<appender-ref ref="debugAppender" />
		<appender-ref ref="infoAppender" />
		<appender-ref ref="errorAppender" />
	</logger>
	<!-- 配置输出到控制台的appender -->
	<root level="info">
		<appender-ref ref="consoleAppender" />
	</root>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值