一、配置文件基本结构图:

1、appender定义写日志的组件

2、logger用于设置某一个包或者类的日志打印级别,以及指定appender,可以不设置,则默认走root

3、root是根logger,只有一个level属性

logback配置queueSize为256 logback配置文件详解_ci

二、配置文件详解:

<!-- scan设置为true时,配置文件修改会重新加载,默认为true,检测周期scanPeriod为60秒,没有给出时间单位,默认为毫秒; -->
<!-- debug属性设置为true时,将打印logback内部日志,实时查看logback运行状态,默认为false -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
	<!-- property用来定义变量,key/value格式,插入上下文中,可以通过${}来获取 -->
	<property name="LOG_HOME" value="${catalina.home}/logs" /> <!-- 定义日志文件根路径 -->
	<!-- ConsoleAppender将日志打印到控制台的组件 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder> <!-- 对日志信息格式化 -->
			<pattern>project:<6>:%5level, %M\(%F %L\), %d{yyyy-MM-dd_HH:mm:ss}, %msg%n
			</pattern>
		</encoder>
	</appender>
	
	<!-- name 日志组件名称 -->
	<!-- RollingFileAppender 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
	<!-- rollingPolicy 当发生滚动时,决定 RollingFileAppender的行为,涉及文件移动和重命名
	TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动
	FixedWindowRollingPolicy: 根据固定窗口算法重命名文件的滚动策略 -->
	<appender name="MyAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/project-info.log</file> <!-- 当前日志文件名称 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/project-info.log.%d{yyyy-MM-dd-HH}
			</fileNamePattern>
			<maxHistory>0</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>project:<6>:%5level, loginOpt, %d{yyyy-MM-dd_HH:mm:ss}, %msg%n</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>  <!-- 取值INFO/DEBUG/WARN/ERROR -->
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>
	
	<!-- triggeringPolicy: 告知 RollingFileAppender 合适激活滚动
	SizeBasedTriggeringPolicy: 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动 -->
	<appender name="MyAppender2"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/project-info.log</file> <!-- 当前日志文件名称 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">   
		    <fileNamePattern>${LOG_HOME}/wm-info.log.%d{yyyy-MM-dd-HH}.zip</fileNamePattern>   
		    <minIndex>1</minIndex>   <!-- 窗口索引最小值 -->
		    <maxIndex>3</maxIndex>   <!-- 窗口索引最大值,当用户指定的窗口过大时,会自动将窗口设置为12。 -->
	    </rollingPolicy>   
	    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">   
	    	<maxFileSize>5MB</maxFileSize>   
	    </triggeringPolicy>   
	    <encoder>   
	    	<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>   
	    </encoder>  
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>  <!-- 取值INFO/DEBUG/WARN/ERROR -->
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>
	
	<appender name="perfAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_HOME}/project-perf.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/project-perf.log.%d{yyyy-MM-dd}
			</fileNamePattern>
			<maxHistory>0</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%msg%n</pattern>
		</encoder>
	</appender>
	
	<!-- Perf4j最重要的appender就是AsyncCoalescingStatisticsAppender,它会把一段时间内StopWatch的信息汇总到一个独立的GroupedTimingStatistics日志信息,
	然后把这个独立的信息传给下游的appenders,比如perfAppender,这样就可以写到文件中去 -->
	<appender name="CoalescingStatistics"
		class="org.perf4j.logback.AsyncCoalescingStatisticsAppender">
		<appender-ref ref="perfAppender" />
		<param name="TimeSlice" value="10000"/> <!-- 配置多少时间间隔去做一次汇总写入文件中,默认值是 30000 ms -->
	</appender>
	
	<logger name="org.perf4j.TimingLogger" level="INFO" additivity="false">
		<level value="INFO"/>
		<appender-ref ref="CoalescingStatistics" />
	</logger>
	
	<!-- name 指定受此logger约束的一个包或者具体类 -->
	<!-- level 设置打印级别,可选,如果未设置则强行继承上级的level -->
	<!-- addtivity 是否向上级传递打印信息,默认为true -->
	<!-- appender-ref 指定引用的日志组件 -->
	<logger name="org.springframework" level="INFO" additivity="false">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="MyAppender" />
		<appender-ref ref="MyAppender2" />
	</logger>	

	<root level="warn">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="MyAppender" />
		<appender-ref ref="MyAppender2" />
	</root>
</configuration>



三、logback依赖jar包:

logback配置queueSize为256 logback配置文件详解_ci_02