2016-09-09 88 views

答えて

1

NullAppenderをプラグインとして実装できます。

プラグインの実装は、このようなものです:

package myPlugins; 
@Plugin(name = "NullAppenderDemo", category = "Core", elementType = "appender", printObject = true) 
public classNullAppenderDemo extends AbstractAppender { 
    private static final long serialVersionUID = 1L; 
    protected NullAppenderDemo(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions) { 
     super(name, filter, layout, ignoreExceptions); 
    } 
    @Override 
    public void append(LogEvent event) { 
     // Nothing is done here !!! 
    } 
    @PluginFactory 
    public static NullAppender createAppender( 
     @PluginAttribute("name") String name, 
     @PluginAttribute("ignoreExceptions") boolean ignoreExceptions, 
     @PluginElement("Layout") Layout<? extends Serializable> layout, 
     @PluginElement("Filters") Filter filter) { 
     if (name == null) { 
      LOGGER.error("No name provided for NullAppender"); 
      return null; 
     } 
     return new NullAppenderDemo(name, filter, layout, ignoreExceptions); 
    } 
} 

はlog4j2構成でプラグインクラスのパッケージを指定します。

<?xml version="1.0" encoding="UTF-8"?> 
    <Configuration packages="myPlugins"> 

使用アペンダ(私はプロパティにxml形式を好むが、あなたが行うことができますによるマッピング、プロパティを希望する場合は

<Appenders> 
     <NullAppender name="null"> 
     </NullAppender> 
     <Console name="console"> 
      <PatternLayout> 
       <pattern> 
         %d %level{length=2} (%c{1.}.%M:%L) - %m%n 
       </pattern> 
      </PatternLayout> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <root level="info"> 
      <appenderRef ref="console" /> 
     </root> 
     <logger name="nullAppenderPackage" additivity="false"> 
      <appenderRef ref="null" /> 
     </logger> 
    </Loggers> 

しかし、実際には、あなたは全くNullAppenderなしレベル=「オフ」と同じ効果を持つことができます。

<logger name="nullAppenderPackage" level="off"> 
</logger> 

あなたは詳細hereを見つけることができます。

+0

これはどのように.propertiesファイルで行うことができますか? –

0

ちょうど不思議ですが、すべてをフィルタリングするようにアペンダーを設定することができる場合、NullAppenderの必要性は何ですか?

関連する問題