如何仅在log4net sql表中保留最新的n个条目?

时间:2010-02-26 13:09:19

标签: log4net

我正在使用log4net登录到sql表。我希望能够保留最近n天,或者表中最近的n个条目。这可能与log4net一起使用吗?

3 个答案:

答案 0 :(得分:2)

Log4net内置了此功能。但是这样的任务可能最适合作为一项工作,例如。在SSIS中(如果您正在运行MS SQL Server)或类似的工具。

答案 1 :(得分:0)

我想通了,对于AdoNetAppender的commandText我将命令文本设置为:

<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception); DELETE FROM [Log] WHERE [Date] &lt; DATEADD(dd, -28, GETDATE())" />

它感觉很hacky,但它确实有效。如果我找到一个更整洁的解决方案,我会在这里发帖。

答案 2 :(得分:0)

我知道我迟到了...但是看看ilivewithian的解决方案我会同意Peter Lillevold的观察,认为它会在记录过程中造成额外的负担是不可取的

是否也可以在数据库中使用触发器来自动删除旧项目?当然,你需要一个支持触发器的数据库,但它似乎是最现代的(包括SQLite和PostgreSQL等开源的)。