log4j2 でスキーマ/DTD を持つことは不可能だと思います。最近、カスタム アペンダーを作成しました。アペンダーをサポートするには、log4j2.xml
次のようにします。
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR" packages="package.same.as.custom.appender">
<appenders>
<CyclicBuffer name="CyclicBuffer" bufferSize="200">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c{1.} - %msg%n"/>
</CyclicBuffer>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="CyclicBuffer"/>
</root>
</loggers>
</configuration>
注意すべき重要な点は、完全にカスタムのCyclicBuffer
要素があり、完全にカスタムのbufferSize
属性があることです。詳細については@PluginFactory
、 およびを取り巻くドキュメントを参照してください。@Plugin
このカスタマイズのせいで、XML を標準の一般的な XSD/DTD で検証できるとは思えません。代わりに、XML を検証したい場合は、独自の XSD を作成する必要があると思います。
注意すべき重要な点の 1 つは、私の XML には次のものがあるということです<configuration status="ERROR"
。これが存在する場合、log4j2 は実行時に不適切な構成に関連するエラーを出力します。XML 検証ほど便利ではありませんが、非常に便利です。
お役に立てば幸いです、ミュール。