我对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"));
}
答案 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);
这将写入您的数据库。