C#-Log4Net AdoNetAppender-截断表/删除旧记录/限制数据库大小

有效限制Log4Net登录表的大小的简单方法是什么?

诸如删除旧记录之类的东西,
或在记录总数达到预定义的限制时删除,
或表(或数据库)大小达到大小限制时

(编辑)
因为我们有两种类型的带标记的数据库(MySQL / MSSQL)的客户,所以单点解决方案从维护POV会更好.

我们考虑过使用一些代码(使用NHibernate)定期执行@samy建议的操作.但是性能高效的Log4Net解决方案总是更好.

解决方法:

我假设您想完全通过log4net来完成;如果你不这样做

>使用cron task,它将以您希望的间隔删除早于x天的数据
>使用可以响应log4net插入新数据的trigger

这些方法将比以下方法干净得多.

由于AdoNetAppender允许您指定command text,因此您可以设置第二个AdoNetAppender,该事件将由日志记录事件以及原始附加程序触发.然后,第二个附加器可以删除您不再想要的数据:

CommandText="DELETE FROM Logs WHERE [date] < DATEADD(Hour,
-6, GETDATE())"

我认为日志记录框架不应处理数据库维护,因此请考虑让MySQL代替.

上一篇:Log4Net使用指南


下一篇:log4net快速上手