2016-11-26 64 views
1

我在web應用程序中使用log4j2來記錄用戶交互。log4j2在web應用程序中啓動不正確

這是一個Web 3.0應用程序在Tomcat 7.0.42

我使用的指令programmaticaly設置設置運行here

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()); 

我已經包含的log4j的web-2.7.jar的網頁應用程序。

我不希望自動初始化,所以我設置的context-param IS_LOG4J_AUTO_INITIALIZATION_DISABLED真

<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> 

但是當我部署的應用程序,我得到的卡塔利娜日誌文件以下警告

信息| jvm 1 | 2016/11/25 20:48:55 | ERROR StatusLogger未找到log4j2配置文件。使用默認配置:僅將錯誤記錄到控制檯。

所有的日誌記錄然後轉到控制檯而不是在我的初始化程序中設置的日誌文件。

如果我刪除log4j-web-2.7.jar當我部署並且記錄器按預期工作時,log4j未初始化。沒有警告和滾動日誌文件被創建並且行爲正確。

我在上下文參數中做了什麼錯誤來關閉自動初始化? \

我可以安全地不包含log4j-web-2.7.jar嗎?或者應該在部署和取消部署應用程序時做些什麼?

感謝斯科特

回答

0

根據我在讀manual,我覺得您的上下文參數不正確。根據「長篇小說」小節應該是:

<context-param> 
    <param-name>isLog4jAutoInitializationDisabled</param-name> 
    <param-value>true</param-value> 
</context-param>