【发布时间】:2019-11-24 13:37:11
【问题描述】:
我使用 nlog dll 写入数据库 - oracle with entity frameWork 在行中:
logger.Log(logLevel, "try");
我在 nlog 的日志中得到以下错误:
文字与模板字符串不匹配
代码是:
SetPropGDC(LogEntity);
NLog.LogLevel logLevel = SetLogLevel(Level.Debug);
logger.Log(logLevel, "try");
ClearGDC();
private void SetPropGDC(LogEntity LogEntity)
{
GlobalDiagnosticsContext.Set(processId, LogEntity.PROCESS_ID.ToString());
GlobalDiagnosticsContext.Set("TIME_STAMP", DateTime.Now);
GlobalDiagnosticsContext.Set(customerId, LogEntity.CUSTOMER_ID.ToString());
}
<targets>
<target name="TRACEDatabase" type="DataBase" keepConnection="false"
dbProvider="Oracle.ManagedDataAccess.Client" connectionString="${gdc:connectionString}"
commandText="insert into TLOG_SITE_GENERAL_TRACE( PROCESS_ID,TIME_STAMP,CUSTOMER_ID)
values(:PROCESS_ID,:TIME_STAMP,:CUSTOMER_ID)">
<parameter name="PROCESS_ID" layout="${gdc:PROCESS_ID}" />
<parameter name="TIME_STAMP" layout="${gdc:TIME_STAMP}" />
<parameter name="CUSTOMER_ID" layout="${gdc:CUSTOMER_ID}" />
</target>
我尝试在 Web.config 中更改行:
<parameter name="TIME_STAMP" layout="${gdc:TIME_STAMP}" />
到:
<parameter name="TIME_STAMP" layout="${longDate}" />
我也遇到了同样的错误
谁能帮忙?
【问题讨论】:
-
您是否尝试过使用
dbType="SqlDbType.DateTime"作为参数?另见github.com/NLog/NLog/wiki/Database-target -
@RolfKristensen 我添加了 dbType ="SqlDbType,DateTime" 现在月份无效
-
很抱歉没有看到您使用的是 Oracle。尝试这样做
dbType="DateTime"