如何覆盖log4net AdoNetAppender的CommandText

时间:2019-06-29 14:56:52

标签: c# logging log4net adonetappender

我正在尝试以编程方式覆盖CommandText的{​​{1}}属性。当我调试它时,该属性似乎已被设置,但是插入操作永远不会终止。

log4net.Appender.AdoNetAppender值本身肯定正确。如果我直接将其粘贴到Appender的配置文件中,它将插入记录。我使用了多种其他类型的附加程序,这些附加程序也能发挥作用。

如何在运行时覆盖CommandText属性?

CommandText

我的Appender配置: (commandText的值基本上为空。)

public class DdsAdoNetAppender : AdoNetAppender
    {
        public new string ConnectionString
        {
            get
            {
                return base.ConnectionString;
            }
            set
            {
               CommandText = "INSERT INTO ApplicationLogs ([LogDateTime],[LogType],[MachineName],[UserName],[LogMessage],[LogException]) " +
                    "VALUES (@log_date_time, @log_type, @machine_name, @user_name, @log_message, @log_exception)";
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

文档说您可以通过属性更改值。 我假设您可以添加一个构造函数,调用基本构造函数,然后更改命令文本。 另外,它说您可以覆盖GetLogStatement。

https://logging.apache.org/log4net/release/sdk/html/P_log4net_Appender_AdoNetAppender_CommandText.htm

答案 1 :(得分:0)

最终我找到了解决方案:我已经从AdoNetAppender配置中完全删除了以下几行:

<connectionString value="" />
<commandText value="" />