gpt4 book ai didi

sql-server - 限制 NLog 数据库目标大小

转载 作者:行者123 更新时间:2023-12-03 16:26:27 25 4
gpt4 key购买 nike

如何配置 NLog,使其在特定时间段后记录到数据库表(在我的情况下为 SQL Server)并清除行?

我正在使用带有 database target 的 NLog . file target有多个选项可以翻转并最终删除日志文件(例如,按日期/时间、大小等)。我希望能够在 NLog 中使用类似的东西。

以下 NLog 文件目标配置允许我将日志设置为保留一段时间,然后完全过期。

<targets async="true">
<target xsi:type="File"
name="TraceFile"
layout="${longdate} - ${level:uppercase=true} - ${callsite:className=true:fileName=true:includeSourcePath=true
:methodName=true}: ${message}${onexception:${newline}EXCEPTION\: ${exception:format=ToString}}"
fileName="${logFolder}\${appName}\Trace\Trace.log"
archiveFileName="${logFolder}\${appName}\Trace\Trace_${shortdate}.log"
archiveNumbering="Sequence"
archiveEvery="Day"
maxArchiveFiles="5"
/>
<target xsi:type="File"
name="DebugFile"
layout="${longdate} - ${level:uppercase=true} - ${callsite:className=true:fileName=true:includeSourcePath=true
:methodName=true}: ${message}${onexception:${newline}EXCEPTION\: ${exception:format=ToString}}"
fileName="${logFolder}\${appName}\Debug\Debug.log"
archiveFileName="${logFolder}\${appName}\Debug\Debug_${shortdate}.log"
archiveNumbering="Sequence"
archiveEvery="Day"
maxArchiveFiles="10"
/>
</targets>

最佳答案

简单的答案是否定的。NLog 没有参数可以像处理文件目标一样自动清理数据库目标。但是,要做到这一点,您可以...

你可以修改你的 NLog.Config 文件 CommandText

<target name="database" xsi:type="Database" connectionStringName="nlog">
<commandText>
insert into myLogTable (LogDateColumn, LogMessageColumn) values (GETDATE(), @message);
delete from myLogTable where LogDateColumn <= DATEADD(DAY, -7, GETDATE());
</commandText>
<parameter name="@message" layout="${message}"/>
</target>

诚然,这是基本的普通示例,但您可以使用 SQL 变得更复杂。此外,诚然,这可能有点费力……每次插入时都要删除。

您可以每晚使用正常的预定 SQL 作业运行删除语句,等等。

只是提供替代品。

希望这会有所帮助。

关于sql-server - 限制 NLog 数据库目标大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26003219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com