gpt4 book ai didi

Nlog ${event-context :item=xxxx} not passing null values

转载 作者:行者123 更新时间:2023-12-02 01:49:37 24 4
gpt4 key购买 nike

我正在使用事件上下文来记录(使用 NLog 方法)一些自定义值来记录数据库中的表。自定义值是一个可为空的整数 - Id。在某些尚未生成 Id 的情况下,我想传递空值。但事实证明,不是 null event-context 将零传递给过程,这在我的情况下是 Not Acceptable ,因为 Id 列上会有一个外键。该过程非常简单——它只是将参数插入到日志表中。过程中没有额外的逻辑会填充零而不是空值。这是我的代码:

Logger log = LogManager.GetCurrentClassLogger();
LogEventInfo theEvent = new LogEventInfo(LogLevel.Debug, "", "Pass my Id");
theEvent.Properties["Id"] = null;
log.Log(theEvent);

配置:
commandText="execute dbo.saveLog @LogDateTime=@LogDateTime, 
@LogSource=@LogSource,
@LogMessage=@LogMessage,
@LogMessageType=@LogMessageType,
@Id=@Id,
<parameter name="@LogDateTime" layout="${date}" />
<parameter name="@LogSource" layout="${callsite}" />
<parameter name="@LogMessage" layout="${message}" />
<parameter name="@Id" layout="${event-context:item=Id}" />

检查日志表时,有 0 而不是 null。任何想法我做错了什么?

最佳答案

我不确定是否有一些其他配置可以将空值作为 NULL 传递,但是有一个简单的解决方法,假设您的整数实际上永远不会为零(NLog 似乎默认使用零):

<commandText>
insert into LogApi ([TimeStamp],[Level],Logger, [Message], Id, Exception, StackTrace) values (@TimeStamp, @Level, @Logger, @Message,
CASE WHEN LEN(@Id) = 0 THEN NULL
ELSE @Id
END,
@Exception, @StackTrace);
</commandText>

盗自: http://blog.evizija.si/rest-web-api-logging-using-nlog/

关于Nlog ${event-context :item=xxxx} not passing null values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23615642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com