2016-02-29 42 views
1

我一直在使用的編程configuration.Please找到我的代碼below.I正在運行的jdk1.8.The該代碼日誌文件得到適當的產生,但是日誌文件名稱不正確創建的配置Log4j2模式defined.The文件將得到與像test_28_12_2016_24.log名稱產生 貌似SimpleDateFormat是一個沒有得到recognized.Please讓我知道,如果我缺少什麼。Log4j2編程配置日誌文件名問題

public class Test { 

    public static void main(String args[]){ 

     public final String LOG_FILE_PATTERN = "-%d{dd-MM-yyyy-HH}.%i.log"; 
     public final String MY_LOG_PATTERN_LAYOUT = "%msg%n"; 

     /* Configuring Logger context */ 
     private LoggerContext context = (LoggerContext) LogManager.getContext(false); 
     final Configuration config = context.getConfiguration(); 
     final Layout<? extends Serializable> layout = PatternLayout.createLayout(MY_LOG_PATTERN_LAYOUT, null, config, null,null,true, true, null, null); 


     /* Configuring policies */ 
     final TimeBasedTriggeringPolicy timeBasedTriggeringPolicy = TimeBasedTriggeringPolicy.createPolicy(TimeUnit.DAYS.toMillis(1), "true"); 
     final SizeBasedTriggeringPolicy sizeBasedTriggeringPolicy = SizeBasedTriggeringPolicy.createPolicy(1024*1024*10); 
     final CompositeTriggeringPolicy policy = CompositeTriggeringPolicy.createPolicy(timeBasedTriggeringPolicy,sizeBasedTriggeringPolicy); 
     final DefaultRolloverStrategy strategy = DefaultRolloverStrategy.createStrategy("50", "1", null,null, null, false, config); 

     /* Creating appenders */ 
     final Appender appender = RollingFileAppender.createAppender("target/logs/test.log" , LOG_FILE_PATTERN, "true", "log-file-appender", null, null, "true", policy, strategy, layout, null, null, null, null, config); 
     appender.start(); 
     AppenderRef ref = AppenderRef.createAppenderRef("File", null, null); 
     AppenderRef[] refs = new AppenderRef[] {ref}; 

     /*Creating loggers*/ 
     LoggerConfig loggerConfig = LoggerConfig.createLogger("true", Level.ERROR, "FILE_LOGGER", "com.*", refs, null, config, null); 
     loggerConfig.addAppender(appender,null,null); 
     config.addLogger("logger" , loggerConfig); 
     context.updateLoggers(); 
    } 

    public void writelogs() { 
     Logger logger = context.getLogger("logger"); 
     logger.error("test data"); 
    } 
} 

回答

0

日誌文件模式應包括在同一個目錄中的多個日誌文件名,但我相信這個問題是沒有在filepattern正確的目錄。它可能是創建或無法在另一個目錄中創建文件。

的文件模式應該是這樣的。

"target/logs/test-%d{dd-MM-yyyy-HH}.%i.log" 
+0

你還使用哪個版本的log4j2?我知道至少2.3的createPolicy()方法接受一個字符串作爲參數。即大小爲'10MB',時間爲'1' – alan7678

+0

至少我不認爲這會產生所需的輸出,也可能導致文件不按預期翻轉。 '最終TimeBasedTriggeringPolicy timeBasedTriggeringPolicy = TimeBasedTriggeringPolicy.createPolicy(TimeUnit.DAYS.toMillis(1),「true」);'' – alan7678