今日私は、プログラム上の特定のアペンダーのログレベルを変更する必要があります。ユーザーは、休憩インターフェースまたはユーザー入力ダイアログを介してレベルを設定できる必要があります。私はアペンダーとフィルターを取得するためにクラスで遊んだが、これは私の期待に合わない。フィルタリストは既に空です。以下は私の設定の短い抜粋です:プログラムでThresholdFilterのログレベルを変更するにはどうすればよいですか?
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="warn" name="forum" monitorInterval="30">
<properties>
<property name="logging.statement.pattern">%d{DATE} %-5p %-20.20t %m [|] %l [|] %x [|] %t%n</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<RollingFile name="FileLogAppender" fileName="${sys:logging.target.dir}/dicom.log" filePattern="${sys:logging.target.dir}/output-%i.log">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout>
<Pattern>${logging.statement.pattern}</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10MB" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="third.party.package" level="INFO" additivity="false">
<AppenderRef ref="FileLogAppender" />
</Logger>
<Logger name="my.custom.package.internal" level="TRACE" additivity="false">
<AppenderRef ref="FileLogAppender" />
</Logger>
<Logger name="my.standard.package" level="DEBUG" additivity="false">
<AppenderRef ref="FileLogAppender" />
</Logger>
<Root level="INFO">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
私はコンフィギュレーションを取得するためにLogManagerのクラスを使用して、まず、私はアペンダの名前で指定されたアペンダを取得すると思いました。しかし、アペンダーはフィルタのリストを提供していないので、それらを反復してThresholdFilterを取得し、レベルを設定することはできません。別の試みは、構成から直接フィルタリストを取得することでした。しかし、このリストは毎回空であるようです。レベルを設定する正しい方法を探すためのヒントを教えてもらえますか?
前もってありがとう、Hardie