1. 程式人生 > >Log4j2介紹和特性例項(五)--使用者自定義日誌等級

Log4j2介紹和特性例項(五)--使用者自定義日誌等級

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Log4j2支援使用者自定義的日誌等級,在程式碼或者配置檔案中都可以進行新日誌等級的定義。</span>

1. 如果要在程式碼中定義新等級,可以使用 Level.forName() 方法:

// This creates the "VERBOSE" level if it does not exist yet.
final Level VERBOSE = Level.forName("VERBOSE", 550);

final Logger logger = LogManager.getLogger();
logger.log(VERBOSE, "a verbose message"); // use the custom VERBOSE level

// Create and use a new custom level "DIAG".
logger.log(Level.forName("DIAG", 350), "a diagnostic message");

// Use (don't create) the "DIAG" custom level.
// Only do this *after* the custom level is created!
logger.log(Level.getLevel("DIAG"), "another diagnostic message");

2. 如果要在配置檔案中定義新等級,可以使用<CustomLevels>標籤進行定義:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<span style="white-space:pre">	</span><!-- Define custom levels before using them for filtering below. -->
	<CustomLevels>
		<CustomLevel name="DIAG" intLevel="350" />
		<CustomLevel name="NOTICE" intLevel="450" />
		<CustomLevel name="VERBOSE" intLevel="550" />
	</CustomLevels>
	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
		</Console>
		<File name="MyFile" fileName="logs/app.log">
			<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
		</File>
	</Appenders>
	<Loggers>
		<Root level="trace">
			<!-- Only events at DIAG level or more specific are sent to the console. -->
			<AppenderRef ref="Console" level="diag" />
			<AppenderRef ref="MyFile" level="trace" />
		</Root>
	</Loggers>
</Configuration>
在Log4j2程式在解析配置檔案後,會自動呼叫Level.forName()建立新日誌等級。

3. 在日誌等級中使用的數字(intLevel),是用來讓系統知道新等級相對於系統自帶的日誌等級所在的位置。

系統預設的日誌等級如下:


如果大家想深入研究,可以參考使用者手冊第17章的內容。

下一篇將介紹配置檔案不再預設路徑時,如何載入配置檔案。謝謝關注。