I need to immediately flush the log to disk and then turn it into normal buffer mode.
The requirement is I need to generate hourly log. For example, user_info.2017-09-08-18.log. Every hourly will generate one. So I use a ScheduledExecutorService to write a simple string to log at the beginning of each hour. But i found that if the buffer is not full, the log is still in buffer. So I want to immediately write one log at the beginning of each hour, make sure every hour has a log. So Logger.shutdown() is not a proper method in this situation.
This is my properties definition:
log4j.appender.user_push_info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.user_info.File=/data/log/user_info
log4j.appender.user_info.DatePattern='.'yyyy-MM-dd-HH'.log'
log4j.appender.user_info.layout=org.apache.log4j.PatternLayout
log4j.appender.user_info.layout.ConversionPattern=%m%n
log4j.appender.user_info.BufferedIO=true
log4j.appender.user_info.BufferSize=8192