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.