我的ASP.NET MVC应用程序已将NLog配置为将任何内容重定向到Application Insights。给出以下伪代码:
var logger = // resolve NLog logger
logger.Log(Level.Info, "SYNC MESSAGE");
Task.Run(() => logger.Log(Level.Info, "ASYNC MESSAGE"));
两个条目都显示在Application Insights日志中,但第二个条目与请求不相关。我该如何解决这个问题?
答案 0 :(得分:0)
如果您没有在这些异步消息中设置操作ID / etc,那么这可能意味着当发生这些日志调用时,HttpContext.Current
为空(您可以通过在lambda中放置一个断点来验证这一点)打电话给那个第二个日志并检查当时的http上下文是什么,我打赌请求早已不复存在。)
跨地方的ID的相关性通常从HttpContext
获取操作信息,因此如果在消息被记录为异步时未设置它,则它就不可用。
我不确定是否有任何 easy 方法可以使用日志记录适配器修复此问题,但是,如果您希望以您的方式保持异步日志记录。