slf4j+logback配置举类

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan属性未true时,如果配置文档发生改变将会进行重新加载 -->
<!-- scanPeriod属性设置监测配置文件修改的时间间隔,默认单位为毫秒,在scan为true时才生效 -->
<!-- debug属性如果为true时,会打印出logback内部的日志信息 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
	<!-- 定义参数常量 -->
	<!-- 日志级别:TRACE<DEBUG<INFO<WARN<ERROR,其中常用的是DEBUG、INFO和ERROR -->
	<property name="log.level" value="debug" />
	<!-- 文件保留时间 -->
	<property name="log.maxHistory" value="30" />
	<!-- 日志存储路径 -->
	<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"></property>
	<!-- 用于说明输出介质,此处说明控制台输出 -->
	<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
		<!-- 类似于layout,除了将时间转化为数组,还会将转换后的数组输出到相应的文件中 -->
		<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>
		<!-- 过滤器,过滤掉不是指定日志水平的日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<!-- 设置日志级别 -->
			<level>DEBUG</level>
			<!-- 如果跟该日志水平相匹配,则接受 -->
			<onMatch>ACCEPT</onMatch>
			<!-- 如果跟该日志水平不匹配,则过滤掉 -->
			<onMismatch>DENY</onMismatch>
		</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>
			<!-- 如果跟该日志水平不匹配,则过滤掉 -->
			<onMismatch>DENY</onMismatch>
		</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>
			<!-- 如果跟该日志水平不匹配,则过滤掉 -->
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>
	
	<appender name="myAppender"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 文件路径 -->
        <file>${log.filePath}/myAppender.log</file>
        <!-- 滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 设置文件名称 -->
            <fileNamePattern>
                ${log.filePath}/myAppender/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>INFO</level>
            <!-- 如果跟该日志水平相匹配,则接受 -->
            <onMatch>ACCEPT</onMatch>
            <!-- 如果跟该日志水平不匹配,则过滤掉 -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
	<!-- 用于存放日志对象,同时指定关联的package位置 -->
	<!-- name指定关联的package -->
	<!-- level表明指记录哪个日志级别以上的日志 -->
	<!-- appender-ref指定logger向哪个文件输出日志信息 -->
	<!-- additivity为true时,logger会把根logger的日志输出地址加入进来,但logger水平不依赖于根logger -->
	<logger name="cn.szlv.sample.controller" level="${log.level}" additivity="true">
		<appender-ref ref="debugAppender" />
		<appender-ref ref="infoAppender" />
		<appender-ref ref="errorAppender" />
	</logger>
	
	<logger name="cn.szlv.sample.service" level="${log.level}" additivity="true">
        <appender-ref ref="myAppender" />
    </logger>
	<!-- 特殊的logger,根logger -->
	<root lever="info">
		<!-- 指定默认的日志输出 -->
		<appender-ref ref="consoleAppender" />
	</root>
</configuration>
public class LogTest1 {

	final static Logger log = LoggerFactory.getLogger(LogTest1.class);

	public static void main(String[] args) {
		LogTest1 t = new LogTest1();
		t.test1();
	}

	public void test1() {
		int i = 0;
		while (i < 100) {
			log.info("this is a test");
			i++;
		}
	}
}

public class LogTest2 {

	final static Logger log = LoggerFactory.getLogger(LogTest2.class);


	public static void main(String[] args) {
		LogTest2 t = new LogTest2();
		t.test1();
	}

	public void test1() {
		int i = 0;
		while (i < 100) {
			log.info("this is a test2222222222222");
			i++;
		}
	}
	
}

包:

slf4j-api-1.7.25.jar

logback-classic-1.1.11.jar 

logback-core-1.1.11.jar 

slf4j







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SLF4J 是一个简单的日志门面,它提供了一组日志 API,可以与许多流行的日志框架(例如 logback、log4j、java.util.logging)集成。而 logback 则是一个功能强大的日志框架,它是 log4j 框架的继承者,提供了更好的性能和更丰富的特性。 要使用 SLF4J + logback 实现日志输出和记录,需要按照以下步骤进行: 1. 引入依赖:在项目的 pom.xml 文件中加入以下依赖: ``` <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.30</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> ``` 2. 配置 logback.xml 文件:在项目的 src/main/resources 目录下创建 logback.xml 文件,并配置日志输出的格式、级别、输出目标等信息。以下是一个简单的 logback.xml 配置示例: ``` <configuration> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="console" /> </root> </configuration> ``` 该配置将日志输出到控制台中,并显示日志的时间、线程、级别、名和消息内容。 3. 在代码中使用 SLF4J API:在需要记录日志的代码中,使用 SLF4J API 进行日志记录。以下是一个示例: ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyClass { private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class); public void doSomething() { LOGGER.info("This is a log message."); } } ``` 在这个示例中,我们使用 LoggerFactory.getLogger() 方法获取了一个 Logger 对象,并使用该对象进行日志记录。在记录日志时,我们使用了 LOGGER.info() 方法,指定日志的级别为 INFO。 以上就是使用 SLF4J + logback 实现日志输出和记录的基本步骤。通过 SLF4J,我们可以方便地切换不同的日志框架,而 logback 则提供了强大的日志功能,例如异步日志记录、定时滚动日志文件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值