我正在使用log4net登录到sql表。我希望能够保留最近n天,或者表中最近的n个条目。这可能与log4net一起使用吗?
答案 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] < DATEADD(dd, -28, GETDATE())" />
它感觉很hacky,但它确实有效。如果我找到一个更整洁的解决方案,我会在这里发帖。
答案 2 :(得分:0)
我知道我迟到了...但是看看ilivewithian的解决方案我会同意Peter Lillevold的观察,认为它会在记录过程中造成额外的负担是不可取的
是否也可以在数据库中使用触发器来自动删除旧项目?当然,你需要一个支持触发器的数据库,但它似乎是最现代的(包括SQLite和PostgreSQL等开源的)。