Logback配置

幾個注意點

  1. Logback支持的日誌級別.

    TRACE < DEBUG < INFO < WARN < ERROR

  2. 如果記錄請求級別爲p,其 logger的有效級別爲q,只有則當p>=q時,該請求才會被執行.

  3. 用同一名字調用LoggerFactory.getLogger方法所得到的永遠都是同一個logger對象的引用.

  4. Logback不限制logger名,目前最好的策略是以logger所在類的名字作爲logger名.

  5. 在logback裏,一個輸出目的地稱爲一個appender。目前支持控制檯、文件、遠程套接字服務器、MySQL、PostreSQL、Oracle和其他數據庫、JMS和遠程UNIX Syslog守護進程等。

  6. 一個logger可以被關聯多個appender。對於logger的每個啓用了的記錄請求,都將被髮送到logger裏的全部appender及更高等級的appender。換句話說, appender也繼承了logger的層次等級。例如,如果根logger有一個控制檯appender, 那麼所有啓用了的請求都至少會被打印到控制檯。如果logger L有額外的文件appender,那麼,L和L 後代的所有啓用了的請求都將同時打印到控制檯和文件。設置logger的additivity爲false可以取消這種默認的appender累積行爲


不同日誌級別不同輸出到不同文件的實現

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE" class="ch.qos.logback.core.FileAppender">
		<file>app.log</file>
		<encoder>
			<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
			</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>DENY</onMatch>
			<onMismatch>ACCEPT</onMismatch>
		</filter>
	</appender>

	<appender name="FILE_ERROR" class="ch.qos.logback.core.FileAppender">
		<file>app_error.log</file>
		<encoder>
			<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
			</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<root level="debug">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
		<appender-ref ref="FILE_ERROR" />
	</root>

</configuration>


按時間繞接並壓縮的實現

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>app.log</file>
		<encoder>
			<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
			</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>app.%d{yyyy-MM-dd_HH-mm}.log.gz
			</fileNamePattern>
			<maxHistory>10</maxHistory>
		</rollingPolicy>
	</appender>


	<root level="debug">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>

</configuration>


按時間和大小繞接的實現

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>app.log</file>
		<encoder>
			<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
			</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- daily rollover -->
			<fileNamePattern>app.%d{yyyy-MM-dd}.%i.log.gz
			</fileNamePattern>
			<maxHistory>10</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>20MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
	</appender>


	<root level="debug">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>

</configuration>


按大小繞接的實現

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>app.log</file>
		<encoder>
			<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
			</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>app.%i.log.gz</fileNamePattern>
			<minIndex>1</minIndex>
			<maxIndex>10</maxIndex>
		</rollingPolicy>
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>20MB</maxFileSize>
		</triggeringPolicy>
	</appender>


	<root level="debug">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>

</configuration>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章