I agree. The user has to be aware of that special file but I wouldn't make it "switchable" because it implicitly limits the available configurations in other places and the user probably does not know. We have a similar magic toggle in the current RFA which is named "staticLogFileName". That toggle disables rolling over date when set.
Still, optional configuration values are a matter of agreement and we can find sensible ones by asking the user list with a poll. I've lately spent some time thinking about how a configuration of the new RFA could look like (in XML) and this is what my brain came up with: <appender type="RFA2" name="RFA2.mine"> <logfileFormat>logs/mylogfile.log</logfileFormat> <rollingConfiguration> <fileCacheFile>${appender.name}.cache</fileCacheFile> <lockingModel type="minimal" /> <rollingConditions> <rollingCondition type="startup" /> <!- rolls files on startup; this is equivalent to the behaviour when one configures appendToFile=false in the current RFA --!> <rollingCondition type="cron"> <pattern>*/5 * * *</pattern> <!-roll every 5 minutes --!> </rollingCondition> <rollingCondition type="cron"> <pattern>0,5,10,15,20,25,30,35,40,45,50,55 * * *</pattern> <!-alternative but semantically equivalent pattern --!> </rollingCondition> <rollingCondition type="cron"> <!-yet another alternative but semantically equivalent pattern --!> <pattern minute="*/5" hour="*" day="*" dow="*" month="*" /> </rollingCondition> <rollingCondition type="filesize"> <maxFileSize unit="mb">5</maxFileSize> <!-roll if filesize exceeds 5mb --!> </rollingCondition> </rollingConditions> <rollingStrategy type="defaultRollingStrategy"> <!-rolls a rolled file to the specified file name format; ${datetime.original} would be the date/time when the original logfile was first rolled --!> <rolledLogfileFormat>logs/mylogfile-${datetime.original}-{$file.index}.log</ rolledLogfileFormat> </rollingStrategy> <disposeConditions> <disposeCondition type="filecount"> <maxFileCount>10</maxfileCount> <!-dispose rolled files if there are 10 newer files --!> </disposeCondition> <disposeCondition type="fileage"> <maxFileAge unit="days">30</maxFileAge> </disposeCondition> </disposeConditions> <disposeStrategy type="moveFile"> <disposedLogfileFormat>logs/old/mylogfile-${datetime}-${file.index}.log</dis posedLogfileFormat> </disposeStrategy> </rollingConfiguration> </appender> I would for instance default these properties like this: fileCachefile: may always default to "${appender.name}.cache" lockingModel: may default to "minimal" rollingConditions: may default to "file size exceeds 1mb" disposeStrategy: may default to "delete file" Cheers Von: d_k [mailto:mail...@gmail.com] Gesendet: Sonntag, 25. August 2013 18:41 An: Log4NET Dev Betreff: Re: Ideas for a new RollingFileAppender Hard tasks are fun, but I wouldn't want the next version to be stuck forever because of it. What if we make it optional? If the user wishes to roll dynamic paths he should flip a switch and specify a target path that should be writable. I don't think you can make it totally headless because the user still needs to be aware a file is written and he needs write permissions to it, so we might as well make the default implementation work without creating files and provide an implementation that persists the data locally. So applications that upgrade to the new version behave the same. On Fri, Aug 23, 2013 at 10:54 AM, Dominik Psenner <dpsen...@gmail.com <mailto:dpsen...@gmail.com> > wrote: Good Morning, I understand your point. That would be exactly how the current RFA behaves. However, people are lazy and when something doesn't work they are first frustrated and then they may throw the framework over board or ask silly questions. The latter happens about once every month. It is not nice to have the answer ready "this is not supported and it won't ever be" because then discussions start about the why-not and may-not-be or could-we-not. As I see it, the time has come that we should provide a solution that works. There are times when documentation does solve an issue but this time it is not. Of course this is not an easy task, but easy tasks are annoying anyway. Hard tasks make the life tasty, don't they? :) Cheers Von: d_k [mailto:mail...@gmail.com <mailto:mail...@gmail.com> ] Gesendet: Dienstag, 20. August 2013 21:16 An: Log4NET Dev Betreff: Re: Ideas for a new RollingFileAppender Will it be reasonable to say that as long as the target folder path is static log4net will clean up old files and if the target folder path is dynamic it will clean them as long as the process is up? On Thu, Aug 15, 2013 at 4:44 PM, Stefan Bodewig <bode...@apache.org <mailto:bode...@apache.org> > wrote: On 2013-08-14, Dominik Psenner wrote: > 2013/8/14 Stefan Bodewig <bode...@apache.org <mailto:bode...@apache.org> > >>> The application runs for 3 days and thus log4net rolls the logfile 3 >>> times. >> Well, I live in a world where all log files of an application are kept >> inside the same folder :-) > For me too, but I've seen enough to know better. Might be a matter of educating the culprits. Yes, I know things like this happen. >> More seriously, to me it sounds like a bit of feature creep. I wouldn't >> consider my logging framework to be the one who's responsible for >> mailing non empty files on rolling. That's the job of >> logrotate/logwatch or similar specialiced tools IMHO. One could even >> argue disposal of logfiles should be out of scope. Maybe that's just >> me. > Yes and no. The framework should at least be able to prevent filesystem > pollution by itself when told to clean up after itself. I'm not sure I agree with that. But arguing against that is almost arguing against having a RollingFileAppender in the first place. So I'll give in. Stefan