简体   繁体   English

log4net adonetappender变量为null

[英]log4net adonetappender variable is null

After googling this for what seems like forever, I have resorted to asking the question here. 在搜索了似乎永远的内容之后,我不得不在这里提出问题。

I have added a custom field and variable to the log4net adonetappender. 我向log4net adonetappender添加了一个自定义字段和变量。 However, after re-working it and trying all practically every suggestion found in the first 4 pages of google, the variable still comes out null. 但是,经过重新设计并尝试了所有在Google的前4页中发现的所有建议之后,该变量仍然为null。

Any ideas why this happening and any suggestions to help? 有什么想法为什么会发生这种情况以及有什么建议可以帮助您?

Output 输出量

RowId   Username    DateOfActivity  Thread  Level   Logger  Message Exception
16  (null)  2015-08-27 18:53:40.607 124732  DEBUG   LogToDatabaseTest.Form1 Retrieving info for ID

App.Config 应用配置

<parameter>
<parameterName value="@username"/>
<dbType value="String" />
<size value="100" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%property{username}"/>
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@log_date"/>
    <dbType value="DateTime"/>
    <layout type="log4net.Layout.RawTimeStampLayout"/>
  </parameter>
  <parameter>
    <parameterName value="@thread"/>
    <dbType value="String"/>
    <size value="255"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%thread"/>
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@log_level"/>
    <dbType value="String"/>
    <size value="50"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%level"/>
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@logger"/>
    <dbType value="String"/>
    <size value="255"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%logger"/>
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@message"/>
    <dbType value="String"/>
    <size value="4000"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message"/>
    </layout>
  </parameter>
  <parameter>
    <parameterName value="@exception"/>
    <dbType value="String"/>
    <size value="4000"/>
    <layout type="log4net.Layout.ExceptionLayout"/>
  </parameter>

C# code to set the variable C#代码设置变量

private void simpleButton1_Click(object sender, EventArgs e)
{
ThreadContext.Properties["username"] = SystemInformation.UserName;

log4net.Config.XmlConfigurator.Configure();//(Watch = false)


try
{
    long_ID = Int64.Parse(textEdit1.Text);
}

catch (FormatException fe)
{
    XtraMessageBox.Show("ID inputted is not a number! Please enter a valid ID", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);

    log.Error(String.Format("Retrieving Info for ID: {0}", textEdit1.Text), fe);

    return;
}
}

The above was working, it was an error in my programming logic. 以上工作正常,这是我的编程逻辑中的错误。 The variable was not set when the logged events were hit. 命中已记录的事件时未设置该变量。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM