2015-07-11 7 views
5

Tutti, sembra che questa domanda sia stata postata più volte, ma ancora non ho una soluzione adeguata per il mio problema. Ho fatto riferimento a this e this ma non funziona.Creazione del file di registro log4j per ogni esecuzione con data e data/ora

Come da sotto file di proprietà, un nuovo file viene creato ogni volta con la data in essa ma voglio creare un file di log con sottostante formato e devono essere generati ogni e ogni volta la mia applicazione viene eseguita,

logFileName_MM_DD_YY -HH_MM_SS.log (o) logFileName.log_YYYY_MM_DD_HH_MM_SS

# Root logger option 
log4j.rootLogger=INFO,file,stdout 

# Redirect log messages to console 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File=.\\logs\\AppLog.log 
log4j.appender.file.DatePattern='.'yyyy-MM-dd 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

risposta

3

EDIT - rimosso il DailyFileAppender suggerimento.

È possibile creare il proprio FileAppender, in questo modo:

public class NewFileOnRebootAppender extends FileAppender { 

    public NewFileOnRebootAppender() { 
    } 

    @Override 
    public void setFile(String file) { 
     super.setFile(prependDate(file)); 
    } 

    private static String prependDate(String filename) { 
     return System.currentTimeMillis() + "_" + filename; 
    } 
} 

e usarlo in questo modo:

log4j.appender.fileOnReboot=yourPackage.NewFileOnRebootAppender 
log4j.appender.fileOnReboot.File=appLogOnReboot.log 
log4j.appender.fileOnReboot.layout=org.apache.log4j.PatternLayout 
log4j.appender.fileOnReboot.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

La denominazione del file non è perfetto, ma si ottiene l'idea ..

+0

Ho provato questo, ma il problema è che creerà un nuovo file di registro ogni minuto, cioè, se la mia applicazione è in esecuzione per 6 minuti, viene creato 6 file di registro. ma ho bisogno di avere un file di registro creato ogni volta che viene avviata la mia applicazione. – Cyborgz

+0

@Cyborgz hai ragione, ovviamente. Ho aggiornato la mia risposta. – Ruben

+0

Testato e funzionato bene !! Grazie! – Cyborgz