sitecore日志记录(Sitecore.Diagnostics.Log.Error)和日志记录GUID

时间:2016-07-25 16:05:40

标签: sitecore log4net sitecore7 sitecore8 log4net-configuration

我对sitecore日志记录有疑问: 当发生意外错误时,我想返回用户唯一的票证ID,因此当用户将通过电子邮件发送有关此错误的信息时,可以在日志数据库中找到它。

我已将 activity_id 参数添加到SQL appender:

<param name="Parameter">
        <param name="ParameterName" value="@activity_id"/>
        <param name="DbType" value="String"/>
        <param name="Size" value="400"/>
        <param name="Layout" type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%P{activityId}"/>
        </param>
      </param>

现在,我需要添加 activityId 。通常我会这样做:

private void Application_Start()
{
...
    HttpContext.Current.Items.Add("activityId", Guid.NewGuid().ToString())

如何在SiteCore Logging中执行此操作? 所以我可以使用:

Sitecore.Diagnostics.Log.Error(“错误发生”,这个);

更新 我已将以下代码添加到Global.asax.cs中,并且值仍为空。

public class Global : Sitecore.Web.Application
    {

        protected void Application_Start(object sender, EventArgs e)
        {               
            log4net.MDC.Set("activityId", Guid.NewGuid().ToString("D"));
        }

2 个答案:

答案 0 :(得分:2)

Sitecore日志记录基于log4net。想法是将您的价值转移到log4net上下文。你可以尝试:

log4net.MDC.Set("activityId", "value");
来自Sitecore.Logging assembley的

答案 1 :(得分:-1)

您可以使用以下代码写入数据库:

//get your ID here - Example: 
var activityId = GetId();

Sitecore.Diagnostics.Log.Error(activityId, this);

这将写入您的数据库。