logback的配置、使用

一. logback

Logback旨在作为流行的log4j项目的后续版本,在log4j离开的地方启动。

Logback的架构足够通用,以便在不同情况下应用。

目前,logback分为三个模块:logback-corelogback-classiclogback-access

logback-core模块为其他两个模块奠定了基础。 logback-classic模块可以被同化为log4j的显着改进版本。 此外,logback-classic本身实现了SLF4J API,因此您可以在logback和其他日志框架(如log4j或java.util.logging(JUL))之间来回切换。

logback-access模块与Servlet容器(如Tomcat和Jetty)集成,以提供HTTP访问日志功能。 请注意,您可以在logback-core之上轻松构建自己的模块。

二. maven引入

	<dependency>
		<groupId>ch.qos.logback</groupId>
		<artifactId>logback-classic</artifactId>
		<version>1.2.3</version>
	</dependency>

注意,可以观察到 logback-classic 的传递性依赖:

所以,在maven里引入logging-classic即可;

 

三. logback.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<!--scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
 scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
  当scan为true时,此属性生效。默认的时间间隔为1分钟(60 seconds)。 
debug: 当此属性设置为true时,将打印出logback内部日志信息,默认值为false。
     -->
<configuration scan="true" scanPeriod="120 seconds" debug="false">
	
	<!--用于区分不同应用程序的记录
	<contextName>springmvc</contextName>
	 -->
	 
	<!-- 定义日志文件所在目录 -->
	<property name="LOG_HOME" value="E:/Users/用户名/logs/" />

	<!--控制台输出 -->
	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<!--解决乱码问题 -->
			<charset>UTF-8</charset>
			
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %logger输出日志的logger名 
				%msg:日志消息,%n是换行符 -->
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
		</encoder>
	</appender>

	<!--滚动文件 -->
	<appender name="infoLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- ThresholdFilter:临界值过滤器,过滤掉 TRACE 和 DEBUG 级别的日志
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
		-->
	
		<!-- 过滤掉ERROR日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>DENY</onMatch>
			<onMismatch>ACCEPT</onMismatch>
		</filter>
		<encoder>
			<charset>UTF-8</charset>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
			<maxHistory>30</maxHistory><!--保存最近30天的日志 -->
		</rollingPolicy>
	</appender>

	<!--滚动文件 -->
	<appender name="errorLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- ThresholdFilter:临界值过滤器,过滤掉 TRACE 和 DEBUG 级别的日志 -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>error</level>
		</filter>
		<encoder>
			<charset>UTF-8</charset>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log
			</fileNamePattern>
			<maxHistory>30</maxHistory><!--保存最近30天的日志 -->
		</rollingPolicy>
		
	</appender>

	<!--这里如果是info,spring、mybatis等框架则不会输出:
	   TRACE < DEBUG < INFO < WARN < ERROR 
	-->
	<!--root是所有logger的祖先,均继承root,如果某一个自定义的logger没有指定level,就会寻找 父logger看有没有指定级别,直到找到root。 -->
	<root level="info">
		<appender-ref ref="stdout" />
		<appender-ref ref="infoLogFile" />
		<appender-ref ref="errorLogFile" />
	</root>

	<!--为某个包单独配置logger 比如定时任务,写代码的包名为:com.seentao.task 步骤如下: 
	    1、定义一个appender,取名为task(随意,只要下面logger引用就行了) 
		appender的配置按照需要即可 
		2、定义一个logger: <logger name="com.seentao.task" level="DEBUG" 
		additivity="false"> <appender-ref ref="task" /> </logger> 注意:additivity必须设置为false,这样只会交给task这个appender,否则其他appender也会打印com.seentao.task里的log信息。 
		3、这样,在com.seentao.task的logger就会是上面定义的logger了。 private static Logger logger 
		= LoggerFactory.getLogger(Class1.class); -->

</configuration>

四. 使用

private static Logger logging = LoggerFactory.getLogger(TestController.class);

@RequestMapping("/testLogger")
public void testLogger(int id, String name) {
	logging.info("id:{}, name:{}",id,name);
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值