2016-11-26 5 views
1

私は、ウェブアプリケーションでlog4j2を使用してユーザーの操作を記録しています。私は、Web用にlog4j-ウェブ-2.7.jarが含まれているherelog4j2がウェブアプリケーションで間違って開始される

String dir = System.getProperty("catalina.base"); 

      ConfigurationBuilder< BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); 

      builder.setStatusLevel(Level.INFO); 
      builder.setConfigurationName("RollingBuilder"); // create a rolling file appender 
      LayoutComponentBuilder layoutBuilder = builder.newLayout("PatternLayout") 
        .addAttribute("pattern", "%d %-5level: %msg%n"); 
      ComponentBuilder triggeringPolicy = builder.newComponent("Policies") 
        .addComponent(builder.newComponent("SizeBasedTriggeringPolicy").addAttribute("size", 
    "250K")); 
      ComponentBuilder defaultStrat = builder.newComponent("DefaultRolloverStrategy") 
       .addAttribute("min", 2) 
       .addAttribute("max", 5); 
      AppenderComponentBuilder appenderBuilder = builder.newAppender("rolling", "RollingFile") 
        .addAttribute("fileName", dir + "/logs/admin.log") 
        .addAttribute("filePattern", dir + "/logs/admin-%d{MM-dd-yy}_%i.log") 
        .add(layoutBuilder) 
        .addComponent(triggeringPolicy) 
        .addComponent(defaultStrat); 
      builder.add(appenderBuilder); 

    // create the new logger 
      builder.add(builder.newLogger("AdminLogger", Level.INFO) 
        .add(builder.newAppenderRef("rolling")) 
        .addAttribute("additivity", false)); 

      builder.add(builder.newRootLogger(Level.DEBUG) 
        .add(builder.newAppenderRef("rolling"))); 
      LoggerContext ctx = Configurator.initialize(builder.build()); 
      LOGGER = LogManager.getLogger(UserLog.class.getName()); 

この

は私がprogrammaticaly命令を使用して設定を設定しています7.0.42

Tomcat上で動作するWeb 3.0アプリですアプリ。

私は自動初期化したくないので、

を、私は真の

<context-param> 
    <description>Turn off auto initialization for log4j2</description> 
    <param-name>IS_LOG4J_AUTO_INITIALIZATION_DISABLED</param-name> 
    <param-value>true</param-value> 
</context-param> 

にコンテキストのparam IS_LOG4J_AUTO_INITIALIZATION_DISABLEDを設定しているが、私はアプリを展開するとき、私はカタリナログファイルに次の警告を得る

INFO | jvm 1 | 2016/11/25 20:48:55 |エラーStatusLogger log4j2構成ファイルが見つかりませんでした。デフォルト設定を使用する:エラーのみをコンソールに記録する。

すべてのロギングは、イニシャライザで設定したログファイルではなくコンソールに送られます。

log4j-web-2.7.jarを削除した場合log4jはデプロイ時に初期化されず、ロガーは正常に動作します。警告とローリングログファイルは作成されず正しく動作します。

自動初期化をオフにするためにコンテキストパラメータに何か問題がありますか? \

安全にlog4j-web-2.7.jarを含めることはできますか?また、アプリがデプロイされ、デプロイされていないときに何かする必要がありますか?

おかげスコット

答えて

0

は、私がmanualに読んだものに基づいて、私はあなたのコンテキストパラメータが間違っていると思います。小節「The Long Story」によれば、それは次のようにするべきである:

<context-param> 
    <param-name>isLog4jAutoInitializationDisabled</param-name> 
    <param-value>true</param-value> 
</context-param> 
関連する問題