如何记录和跟踪.net应用程序的异常

时间:2017-01-19 09:40:58

标签: c# azure logging ms-tracing-eventsource

我的任务是在.net应用程序中记录和跟踪异常。目的是在部署应用程序后记录所有数据。并且信息应该易于跟踪以处理错误。我们正在使用azure服务。 为了使问题陈述更清楚,这里是一个小的演示代码

public bool Connect()
{
        try
        {
            while (!IsConnected())
            {
                _terminal = new TerminalClient("denaliTermClient", _terminalsrv_host, _terminalsrv_port);
                if (_terminal.KillTerminals())
                {
                    _logger.Log("Existing terminals killed successfully");
                }
                else
                {
                    _logger.Log("Failed killing existing terminals");
                }

                _connection.Connect(
                _terminalsrv_host,
                _terminalsrv_port,
                _broker,
                _account,
                _password);
                }
                return true;
            }
         catch (Exception ex)
         {
             long cid = DefaultLogger.CorrelationID;
             _logger.Log(cid, ex);
             if (ex.Message != null)
             {
                 if (ex.Message.Contains("No connection could be made because the target machine actively refused it"))
                 {
                    _logger.Log(cid, "Connection Failed. Please start the Nj4x Terminal Server.");
                 }
                 else if (ex.Message.Contains("Invalid user name or password"))

                 {
                    _logger.Log(cid, "Nj4x is running in trial mode. Cannot start trading.");
                 }
              }
              this.Connect();    // TODO !
         }

            return false;
}

现在我应该如何实现这个ILogger接口。我应该使用哪些服务? 我没有这方面的经验,所以显然我对此并不了解。希望我已经明确了问题陈述。

编辑:我不喜欢登录.txt文件的想法。这将包含数千个日志,因此它不容易追踪。我正在寻找一些有助于易处理性的好框架。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Azure服务,我相信Application Insights是您的最佳选择。

如果没有很多配置,它会自动检测未捕获的异常并将其记录在许多其他内容中。您也可以添加自己的痕迹。

Here你在MSDN上写了一篇很好的文章,解释了整个过程。

希望它有所帮助!