强制Log4Net RollingFileAppender滚动

强制Log4Net RollingFileAppender滚动,log4net,rollingfileappender,Log4net,Rollingfileappender,根据,RollingFileAppender仅在记录消息时滚动日志文件。我需要登录到此文件,但每天都要将其导入另一个数据库。我不能使用数据库appender,因为我需要文件,并且必须将数据从日志文件转换到数据库(它不是直接副本)。问题是如果午夜后没有日志活动,日志就不会滚动。导入器查找前几天的文件(我无法更改此代码),因此如果没有活动且日志未滚动,导入器将找不到该文件。有没有办法强迫圆木在午夜滚动,而不让另一根线醒来并强迫它滚动?自定义appender可以这样做吗?如果可能,我希望避免这种情况。

根据,RollingFileAppender仅在记录消息时滚动日志文件。我需要登录到此文件,但每天都要将其导入另一个数据库。我不能使用数据库appender,因为我需要文件,并且必须将数据从日志文件转换到数据库(它不是直接副本)。问题是如果午夜后没有日志活动,日志就不会滚动。导入器查找前几天的文件(我无法更改此代码),因此如果没有活动且日志未滚动,导入器将找不到该文件。有没有办法强迫圆木在午夜滚动,而不让另一根线醒来并强迫它滚动?自定义appender可以这样做吗?如果可能,我希望避免这种情况。

编写一个Windows服务,该服务在午夜后立即触发事件,并使用相同的配置写入虚拟日志项。

根据您可以将其设置为每天滚动,请参阅此配置:


您必须从问题“什么代码路径导致滚动例程?”的角度来考虑这一点。一旦你知道这个程序是如何实现的,你就可以决定如何触发它

一个定制的appender能做到吗?当然可以,但是在您通过appender登录之前,appender中的任何代码都不会运行,所以您可以重新开始

至于“是否有任何方法可以在午夜强制日志滚动,而不让另一个线程唤醒并强制其滚动?”的问题,我想说,该问题相当于“是否有可能在没有运行任何代码的情况下强制日志在午夜滚动?”。我不是想开玩笑,也不是想侮辱你,我只是想用一种希望能为你解答的方式重申这个问题。:-)


解决这一问题的最简单方法是唤醒某些东西并进行日志记录,以强制文件旋转。

…但在下一个日期间隔过后(即OP的情况下是午夜之后),直到追加器收到日志消息,文件才实际滚动。然后它滚动文件并启动一个新文件。