我们有一个使用Ektron v8.0构建的自定义Web应用程序,它使用EL 3.1,日志配置中的格式模板配置如下:
<add
name="Text Formatter"
type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging"
template="Timestamp: {timestamp}
Message: {message}
Category: {category}
Priority: {priority}
EventId: {eventid}
Severity: {severity}
Title:{title}
Extended Properties: {dictionary({key} - {value}
)}"
/>
请求网址是否有模板项?如果没有带有查询字符串参数的请求url,则很难调试错误。
答案 0 :(得分:1)
没有专门针对请求网址的模板项。您可以自己将请求URL添加到扩展属性,以便记录信息:
string requestUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri;
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("RequestUrl", requestUrl);
Logger.Write("My message", dictionary);
由于格式化程序正在记录您的RequestUrl将显示在日志中的所有字典键/值。
另一种方法是创建自己的IExtraInformationProvider
来填充您感兴趣的特定Web信息。除了使用Enterprise Library界面之外,它实际上是相同的。
public class WebContextInformationProvider : IExtraInformationProvider
{
public void PopulateDictionary(IDictionary<string, object> dict)
{
dict["RequestUrl"] = System.Web.HttpContext.Current.Request.Url.AbsoluteUri;
}
}
Dictionary<string, object> dictionary = new Dictionary<string, object>();
WebContextInformationProvider webContext = new WebContextInformationProvider();
webContext.PopulateDictionary(dictionary);
Logger.Write("My message", dictionary);