Log4Net AdoNetAppender-截断表/删除旧记录/限制DB大小

时间:2015-02-02 11:56:43

标签: c# mysql sql log4net adonetappender

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

删除旧记录之类的东西, 或当记录总数达到预定义限制时删除, 或当表(或DB)大小达到大小限制时

(编辑) 因为我们的客户有两种类型的标记DB(MySQL / MSSQL),单点解决方案从维护POV中会更好。

我们考虑使用一些代码(使用NHibernate)定期执行@samy建议的内容。但性能有效的Log4Net解决方案总是更好。

1 个答案:

答案 0 :(得分:4)

我假设你想完全从log4net做到这一点;如果你没有,那么

  • 使用cron task将删除所需时间间隔超过x天的数据
  • 使用trigger可以通过log4net
  • 对新数据的插入作出反应

这些方法比以下方法更清洁。

由于AdoNetAppender允许您指定command text,因此您可以设置第二个AdoNetAppender,它将与您的原始appender一起由日志记录事件触发。然后,第二个appender可以删除您不想要的数据:

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

我认为日志框架不应该处理数据库维护所以请考虑让MySQL代替工作。