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

发布于 2024-08-23 05:58:22 字数 79 浏览 6 评论 0原文

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

I am using log4net to log to a sql table. I'd like to be able to either only keep the most recent n days, or the most recent n entries in the table. Is this possible with log4net?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

宣告ˉ结束 2024-08-30 05:58:22

Log4net 没有内置此功能。但这样的任务可能最好作为作业放置,例如在 SSIS(如果您运行的是 MS SQL Server)或类似工具中。

Log4net do not have this capability built-in. But such a task is probably best placed as a job ,e.g. in SSIS (if you're running MS SQL Server) or similar tools.

残花月 2024-08-30 05:58:22

我想通了,对于 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,但它有效。如果我找到更简洁的解决方案,我会在这里发布。

I figured it out, for the commandText for the AdoNetAppender I set the command text to:

<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())" />

It feels hacky, but it works. I'll post here if I find a neater solution.

喜爱纠缠 2024-08-30 05:58:22

我知道我参加聚会迟到了...但是看看 ilivewithian 的解决方案,我同意 Peter Lillevold 的观察结果是,让它在日志记录过程中造成额外的负载是不可取的。

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

I know I'm late to the party... but looking at ilivewithian's solution I would agree with Peter Lillevold's observation that having it cause additional load in the logging process is undesirable.

Wouldn't it also be possible to use a trigger in the database to auto-delete the older items? Sure, you would need a DB that supports triggers, but it seems like most modern ones (including open source ones like SQLite and PostgreSQL) do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文