gpt4 book ai didi

c# - NLog 一次调用记录 LogEventInfo 和 Exception 数据

转载 作者:太空狗 更新时间:2023-10-29 22:26:24 24 4
gpt4 key购买 nike

我正在使用 NLog 记录在我的应用程序中捕获的错误。我已经弄清楚如何捕获异常并使用 Logger.ErrorException() 记录它们,并且我已经弄清楚如何使用 Logger.Log(LogEventInfo) 记录上下文事件信息。但是我希望能够一次记录所有这些信息,而不是每次异常都获取两个日志条目,每个条目只有一半的数据。继承人的代码:

        Exception ex = Server.GetLastError();
Logger logger = LogManager.GetCurrentClassLogger();
LogEventInfo eventInfo = new LogEventInfo(LogLevel.Trace, "Hello from RunJob", logger.Name);
eventInfo.Properties["CustomerID"] = "someCustID";
eventInfo.Properties["TargetSite"] "someTargetSite";
logger.Log(eventInfo); //This results in a log entry which contains the values stored in 'CustomerID' and 'TargetSite', but not the details of the exception!
logger.ErrorException(ex.Data.ToString(), ex); //this results in a log entry which contains the exception details, but not the event info stored in 'CustomerID' and 'TargetSite'!

我想要的只是针对每个捕获到的异常记录一个日志条目,并且该日志条目需要包含 CustomerID 和 TargetSite 事件信息。

这是我的 nlog.config 布局,以防有帮助:

          Current User ID: ${event-context:CUID}${newline}
Target Site: ${event-context:TargetSite}${newline}
Exception Type: ${exception:format=Type}${newline}
Exception Message: ${exception:format=Message}${newline}
Stack Trace: ${exception:format=StackTrace}${newline}
Additional Info: ${message}${newline}"

任何提示将不胜感激!谢谢

最佳答案

您只需将 Exception 属性设置为您在 LogEventInfo 对象上的异常:

Exception ex = Server.GetLastError();
Logger logger = LogManager.GetCurrentClassLogger();
LogEventInfo eventInfo = new LogEventInfo(LogLevel.Trace,
"Hello from RunJob", logger.Name);
eventInfo.Properties["CustomerID"] = "someCustID";
eventInfo.Properties["TargetSite"] "someTargetSite";

eventInfo.Exception = ex; //set the exception for the eventInfo

logger.Log(eventInfo);

关于c# - NLog 一次调用记录 LogEventInfo 和 Exception 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com