我对sitecore日志记录有疑问:当发生意外错误时,我想返回给用户唯一的票证id,这样当用户将此错误通过电子邮件发送时,可以在日志数据库中找到它。
我已经向SQL appender:添加了activity_id参数
<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日志中执行此操作?所以我可以使用:
Sitecore.Diagnostic.Log.Error("错误发生",this);
更新:我已经向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"));
}
Sitecore日志记录基于log4net。想法是将您的价值转移到log4net环境中。你可以试试:
log4net.MDC.Set("activityId", "value");
来自Sitecore.日志汇编
您可以使用以下代码写入数据库:
//get your ID here - Example:
var activityId = GetId();
Sitecore.Diagnostics.Log.Error(activityId, this);
这将写入您的数据库。