log4net 插入(空)到自定义列
log4net inserting (null) into custom column
按照建议添加了自定义列here。当我使用代码行
将某些内容登录到此专栏时,一切都运行良好
log4net.GlobalContext.Properties["CustomColumn"] = "Custom value";
但是如果我像下面这样传递空值
log4net.GlobalContext.Properties["CustomColumn"] = null;
这被记录为 (null)(括号中包含一个字符串 null)。如果我根本不登录也会发生这种情况,就像我注释代码如下所示。
//log4net.GlobalContext.Properties["CustomColumn"] = null;
所以问题是,有没有办法让它在数据库中实际为空,而不是字符串 - (null)。我正在使用 ms sql 服务器 2008 r2
试试这个
log4net.GlobalContext.Properties["CustomColumn"] = DBNull.Value;
我已经将Web.config文件中commandText值的插入语句修改为
"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[BrowserCapabilities]) VALUES (@log_date, @thread, @log_level,
@logger, @message, @exception, CASE WHEN @BrowserCapabilities = '' OR @BrowserCapabilities = '(null)' THEN NULL ELSE @BrowserCapabilities END )"
现在可以正常工作了。
在这种情况下,我更喜欢 "NULLIF" 而不是 "CASE WHEN"。这个方案还是需要修改Web.config文件中commandText值的insert语句,但是效率更高:
INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[BrowserCapabilities])
VALUES (@log_date,@thread,@log_level,@logger,@message,@exception,NULLIF(@BrowserCapabilities,'(null)')"
按照建议添加了自定义列here。当我使用代码行
将某些内容登录到此专栏时,一切都运行良好log4net.GlobalContext.Properties["CustomColumn"] = "Custom value";
但是如果我像下面这样传递空值
log4net.GlobalContext.Properties["CustomColumn"] = null;
这被记录为 (null)(括号中包含一个字符串 null)。如果我根本不登录也会发生这种情况,就像我注释代码如下所示。
//log4net.GlobalContext.Properties["CustomColumn"] = null;
所以问题是,有没有办法让它在数据库中实际为空,而不是字符串 - (null)。我正在使用 ms sql 服务器 2008 r2
试试这个
log4net.GlobalContext.Properties["CustomColumn"] = DBNull.Value;
我已经将Web.config文件中commandText值的插入语句修改为
"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[BrowserCapabilities]) VALUES (@log_date, @thread, @log_level,
@logger, @message, @exception, CASE WHEN @BrowserCapabilities = '' OR @BrowserCapabilities = '(null)' THEN NULL ELSE @BrowserCapabilities END )"
现在可以正常工作了。
在这种情况下,我更喜欢 "NULLIF" 而不是 "CASE WHEN"。这个方案还是需要修改Web.config文件中commandText值的insert语句,但是效率更高:
INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[BrowserCapabilities])
VALUES (@log_date,@thread,@log_level,@logger,@message,@exception,NULLIF(@BrowserCapabilities,'(null)')"