2

我使用 Nlog 和 MYsql 作为目标数据库。

我的配置如下:

    <target name="databaselog" type="Database" keepConnection="true" 
       useTransactions="false"
       dbProvider="MySql.Data.MySqlClient"
       connectionString="Server=localhost;Database=****;User ID=****;Password=****;Connect Timeout=5;"
       commandText=" insert into logs(time_stamp,logger,message,log_level) Values(@TIME_STAMP,@LOGGER,@MESSAGE,@LOGLEVEL)">
  <parameter name="@TIME_STAMP" layout="${longdate}"/>
  <parameter name="@LOGGER" layout="${logger}"/>
  <parameter name="@MESSAGE" layout="${message}"/>
  <parameter name="@LOGLEVEL" layout="${level:uppercase=true}"/>
</target>

.

仍然无法在 MYSql DB 中插入信息或任何级别的消息。

谁能帮帮我?

再见,我也尝试了命令文本

insert into logs(time_stamp,logger,message,log_level) Values(?,?,?,?)

但无法在 mysql db 中插入数据。

4

2 回答 2

3

来自 NLog文档

NLog 旨在吞下日志记录可能导致的运行时异常。以下设置可以更改此行为和/或重定向这些消息。

  • <nlog throwExceptions="true" /> - 在配置文件中添加 throwExceptions 属性会导致 NLog 停止屏蔽异常并将它们传递给调用应用程序。此属性在部署时非常有用,可以快速定位任何问题。建议在应用程序正确配置为运行后立即将 throwExceptions 设置为“false”,这样任何意外的日志记录问题都不会导致应用程序崩溃。
  • <nlog internalLogFile="file.txt" /> - 添加 internalLogFile 会导致 NLog 将其内部调试消息写入指定文件。这包括在记录期间可能引发的任何异常。
  • <nlog internalLogLevel="Trace|Debug|Info|Warn|Error|Fatal" /> – 确定内部日志级别。级别越高,内部日志输出的详细程度越低。
  • <nlog internalLogToConsole="false|true" /> – 确定是否将内部日志消息发送到控制台。
  • <nlog internalLogToConsoleError="false|true" /> – 确定是否将内部日志消息发送到控制台错误输出 (stderr)。
于 2012-11-20T17:25:57.297 回答
-1

右键单击 NLog 配置文件。将属性“复制到输出目录”的值设置为“始终复制”

于 2013-03-11T11:48:53.537 回答