有效限制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代替.