2017-07-04 49 views
0

我有麻烦每次写入日志数据库中的一次插入一个GUID标识。它抛出这些错误:NLOG写一个GUID数据库

Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.SqlClient.dll 
Exception thrown: 'System.Data.SqlClient.SqlException' in NLog.dll 

我有什么至今:

@"INSERT INTO [dbo].[Nlogs] 
      (Id,Message) 
      values 
      (@Id,@Message)"; 

    databaseTarget.Parameters.Add(new DatabaseParameterInfo("@Id", Guid.NewGuid().ToString())); 
    databaseTarget.Parameters.Add(new DatabaseParameterInfo("@Message", "${message}")); 

感谢。

+0

请添加堆栈跟踪! – Fruchtzwerg

+0

@Fruchtzwerg这是所有有。只要要创建日志,它就重复这两行。我认为这是由于“ID”作为主键,它的错误,因为它不能使用相同的GUID两次。我如何获得它为每个条目创建一个新的Guid?我删除ID作为主键和与每个运行所有具有相同的GUID它记录细。 – user3034572

回答

1

落得这样做的:

@"INSERT INTO [dbo].[Nlogs] 
     (Id,Message) 
     values 
     (NewID(),@Message)"; 

databaseTarget.Parameters.Add(new DatabaseParameterInfo("@Message", "${message}")); 
0

我将如何得到它为每个条目创建一个新的GUID?

使用${guid}event properties

例如:

<target name="db" 
     xsi:type="Database" 
     connectionStringName="NLogConn" 
     commandText="NSERT INTO [dbo].[Nlogs] 
      (Id,Message) 
      values 
      (@Id,@Message)" > 
    <parameter name="@Id"  layout="${guid}" /> 
    <parameter name="@Message" layout="${message}" /> 
</target> 
+0

我试过$ {GUID},但我仍然得到同样的例外 – user3034572

+0

难道是因为我使用.NET的核心? – user3034572