NLog获取当前用户导致出现错误

时间:2019-01-02 09:34:25

标签: asp.net logging asp.net-core nlog

这是我的目标

<target xsi:type="Database" name="database"
   connectionString="${var:connectionString}"
   commandText="INSERT INTO [AppOne].[EventLogs](Id, Message, Level, Logger, Action,Identity)VALUES(NewID(), @Message, @Level, @Logger, @Action,@Identity)">
<parameter name="@Message" layout="${message}" />
<parameter name="@Level" layout="${level}" />
<parameter name="@Logger" layout="${logger}" />
<parameter name="@Action" layout="${aspnet-mvc-action}"/>
<parameter name="@Identity" layout="${aspnet-user-identity}"/>

我也在我的Startup.cs中放置了这一行

services.AddSingleton<Microsoft.AspNetCore.Http.IHttpContextAccessor, HttpContextAccessor>();

但是,当我运行我的应用程序并尝试记录项目时,我在内部日志中收到此错误:

  

错误DatabaseTarget(Name = database):写入数据库时​​出错。   异常:System.Data.SqlClient.SqlException(0x80131904):不正确   关键字“ Identity”附近的语法。

我正在使用Asp.net Core 2.1。我尝试搜索文档,但看起来它仅支持asp.net?

1 个答案:

答案 0 :(得分:1)

您已经使用关键字作为列名,如果可以阻止这种情况的发生,我将避免这样做。但是,您可以通过将关键字放在方括号中来解决错误,因此您的SQL应该是

INSERT INTO [AppOne].[EventLogs](Id, [Message], [Level], Logger, [Action],[Identity])VALUES(NewID(), @Message, @Level, @Logger, @Action,@Identity)