I am trying to have log4j2 write log files with names YYYYmmdd-HHMMSS.log, but 
not start writing the file until we have a good system time (>year 1986). I 
have an application running on a system that boots up, and takes a while to get 
the correct time; until that happens, the system thinks it's back in 1970, and 
there really is no point to writing a log file with a bum date.

Using a custom filter, I can get the FileAppender to not write any events until 
the system time is set. I can get the FileAppender to not open the file until 
the first event is passed by the custom filter (createOnDemand="true"). Using 
Log4J2 - assigning file appender filename at runtime, I can get the file named 
YYYYmmdd-HHMMSS.log, but the YYYYmmdd-HHMMSS.log in the configuration XML seems 
to get evaluated when log4j2 is initialized (not when the file is opened), so 
my file name is still 19700101-000000.log.

Is there a way to defer evaluation of the name for a log4j2 FileAppender until 
the file is actually opened? Alternatively, is there a sneaky way to use 
RollingFileAppender to do this? (I don't see a way to change the filename of 
the current file there, just old files)

I could do a custom appender (FileAppender/FileManager just are not all that 
long), but I'm trying to avoid that if possible.
 

Reply via email to