我正在尝试使用 NLog 2 将一些审计信息记录到 SQL Server 2008 表中。为了能够将参数传递给 SQL 插入查询,我正在使用 LogEventInfo 和Event Context Layout Renderer。
日志记录本身有效,但日期时间仅以秒精度存储。我希望能够以毫秒精度进行存储,但没有找到任何可以告诉我如何做到这一点的东西。
这是我记录事件的 C# 代码:
private void LogMessage(DateTime requestDateTime)
{
LogEventInfo theEvent = new LogEventInfo(LogLevel.Debug, "", "Pass my custom value");
theEvent.Properties["RequestDate"] = requestDateTime;
}
这是我在 NLog.config 配置中的目标:
<target xsi:type="Database"
name="SqlLog"
dbProvider="sqlserver"
connectionString="server=localhost;database=Test;integrated security=sspi">
<commandText>
INSERT [dbo].[ApiLog]
(
[ServerName], [RequestDate]
)
VALUES (@ServerName, @RequestDate);
</commandText>
<parameter name="@ServerName" layout="${machinename}"/>
<parameter name="@RequestDate" layout="${event-context:item=RequestDate}"/>
</target>
我发现有一个解决方法,theEvent.Properties["RequestDate"] = requestDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff")
但我不想这样做,因为那样你可能会遇到日期时间格式和文化问题。
有谁知道我可以使用 NLog.config 中的配置更改精度的方法?