【问题标题】:sitecore logging (Sitecore.Diagnostics.Log.Error) and Log record GUID站点核心日志记录 (Sitecore.Diagnostics.Log.Error) 和日志记录 GUID
【发布时间】:2016-07-25 16:05:40
【问题描述】:

我对 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("发生错误", this);

更新: 我在 Global.asax.cs 中添加了以下代码,但 value 仍然是空的。

public class Global : Sitecore.Web.Application
    {

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

【问题讨论】:

    标签: sitecore log4net sitecore7 sitecore8 log4net-configuration


    【解决方案1】:

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

    log4net.MDC.Set("activityId", "value");
    

    来自 Sitecore.Logging 组件

    【讨论】:

    • 我应该在哪里添加此代码有具体要求吗?我已将此代码添加到 Global.asax.cs 并且值仍然为空(我在原始帖子中添加了更新)。
    • 我尝试在记录之前添加此代码,似乎它对 SiteCode.Diagnostics.Log 没有影响,并且我的 activityId 字段仍然为空。我最终将 GUID 添加到消息文本中。它将可以通过 SQL LIKE 语句进行搜索。但是将它放入单独的字段中仍然会很好。
    【解决方案2】:

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

    //get your ID here - Example: 
    var activityId = GetId();
    
    Sitecore.Diagnostics.Log.Error(activityId, this);
    

    这将被写入您的数据库。

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 2011-06-17
      • 1970-01-01
      • 2016-03-23
      • 2011-03-18
      • 2018-12-20
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多