7.Logback主要标签

Logback主要标签说明

  1. Logger: 日志的记录器,主要用于存放日志对象,也可以用来定义日志的类型和级别等。
  2. appender:用于指定日志输出的目的地,也就是输出的媒介。这个媒介可以是控制台,也可以是文件,还可以是远程套接字服务器等。
  3. layout:用于格式化日志输出的格式。

Spring整合Logback之后,Logback会默认去寻找文件进行加载,它的加载顺序为:

  • 编译时指定java -Dlogback.configurationfile=xxx/xxx.xml
  • 加载classpath下的logback.groovy文件
  • classpath下的logback-test.xml文件
  • classpath下的logback.xml文件
  • 若没有以上文件,若jdk是1.6以上,则会调用Service Loader查找com.qos.logback.class.spi.Configurator这个接口的第一个实现类
  • 如果以上都没有,则按照ch.qos.logback.classic.BasicConfigurator来输出,这个类设置的是直接在控制台输出。
  • logback在eclipse中经常会乱报错,改了很多次都没辙,后来改回原来的反而好了。。。
  • 在类上方使用@Slf4j注解以后就可以不用创建logger对象,直接使用log即可。除了Logback之外,还需要添加依赖包
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.25</version>
</dependency>

  • 然后:

1> 在https://projectlombok.org/download 下载Lombok.jar文件
2> 将lombok文件放到eclipse安装目录
3> 然后win+R输入cmd进入cmd控制台,进入到eclipse安装目录下,输入以下命令:

java -jar lombok.jar

4> 在跳出来的窗口中首先选Specify location按钮,选择eclipse安装目录,然后点击Install/update
5> 安装成功后,退出,重启eclipse

Logback配置:

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->

<configuration debug="false" scan="true" scanPeriod="60 seconds" >
	<!-- <property> :用来定义定义参数常量,它有两个属性name和value,通过<property>定义的值会被插入到logger上下文中,可以使“${}”来使用变量。 -->
	<!-- 日志输出有五个级别:trace - debug - info - warn - error -->
	<property name="log.level" value="debug" />
	<!-- 文件最多保留30天 -->
	<property name="log.maxHistory" value="30" />
	<!-- catalina.base:tomcat实例的根目录 -->
	<property name="log.filePath" value="${catalina.base}/o2o/logs/webapps" />
	<!-- 输出格式:d%表示时间格式,%thread表示运行线程,%-5level表示缩进5位显示级别,%logger{50} - %msg表示哪一个类输出的信息,%n为换行 -->
	<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" />
	<!-- appender:负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名 -->
	<!-- 控制台输出日志设置 -->
	<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
		<!-- encoder:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
		<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:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
		<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>
	
	<!-- ERROR日志设置 -->
	<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
	<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:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
		<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>
	
	<!-- INFO日志设置 -->
	<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
	<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:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
		<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>
	<logger name="com.uuunl.o2o" level="${log.level}" additivity="true">
		<appender-ref ref="debugAppender"/>
		<appender-ref ref="infoAppender"/>
		<appender-ref ref="errorAppender"/>
	</logger>
	<root level="INFO">
		<appender-ref ref="consoleAppender"/>
	</root>

</configuration>
posted @ 2018-11-16 00:03  stdio_0  阅读(533)  评论(0编辑  收藏  举报