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のconfigで精度を変更できる方法を知っている人はいますか?