适用于 .NET SOA 应用程序的日志系统






2.05/5 (8投票s)
无论您的系统设计得多么精巧,分布式 SOA 应用程序始终是复杂的。当 SOA 应用程序出现故障时,很难追踪问题的原因以及发生错误的 Web 服务。为了解决这个难题,您需要一个日志系统,例如 UptoLog。
引言
无论您的系统设计得多么精巧,分布式 SOA 应用程序始终是复杂的。当 SOA 应用程序出现故障时,不仅难以追踪问题的原因,也难以追踪发生错误的组件和 Web 服务。同一错误的日志很可能位于不同的机器上,与参与该活动的 Web 服务和消费者并置。在查找问题原因时,需要将来自不同机器的日志拼接起来。很难弄清发生错误时 Web 服务是如何被消费的。此外,也没有简单的机制来捕获系统中端到端活动的流程。
为了解决这个难题,您需要一个可靠的日志系统,它可以是 UptoLog。在本文中,我将深入探讨 UptoLog,并描述该 日志系统 如何在 .NET SOA 应用程序中使用。
使用 UptoLog
UptoLog 旨在收集 .NET 2.0、3.0 和 3.5 应用程序中应用程序故障的详细信息。该系统记录错误并生成跨多个逻辑和物理层的跟踪和时间测量。日志数据收集在一个中央数据库中。在特定活动期间收集的所有日志数据都通过唯一的活动 ID 相关联。这使得可以对系统中端到端跨多个层的特定活动的错误、跟踪和时间测量进行分组。
该图显示了 UptoLog 日志系统如何集成到 SOA 应用程序中。

您可以在此处找到有关 UptoLog 日志系统中不同组件的详细信息。
UptoLog 搜索服务器是一个具有简单搜索工具的 Web 应用程序。这使您能够搜索收集到的日志数据,并调查应用程序故障,或通过跨多台机器的时间测量来观察系统的实际响应时间。
例如,如果发生应用程序错误,Web 服务消费者和上下文会自动可视化,因为错误日志从应用程序的所有层收集到一个中央数据库中,并且日志按活动分组。
以下是 UptoLog 搜索服务器如何可视化日志的两个示例。
来自应用程序故障的屏幕截图,显示了来自两个不同层的两个错误日志,按活动分组
屏幕截图显示了来自某项活动的时间测量,它协同显示了 SOA 应用程序的响应时间
如果您想尝试这些示例,示例中使用的测试应用程序可以在此处下载。测试应用程序位于一个 .NET 2.0 解决方案中,其中还包含其他示例。
使用 UptoLog 进行日志记录
应用程序通过 UptoLog Satellite 组件进行日志记录,该组件集成到 SOA 应用程序中的所有消费者和 Web 服务应用程序中。
下面将简要描述日志记录功能。更详细的描述可以在此处找到。
通过方法调用记录错误。UptoLog 记录三个不同错误级别的错误。根据所需的错误级别,使用以下方法之一:LogFatalError
、LogError
或 LogWarning
。
这显示了致命错误是如何记录的
try
{
// The application code that can cause the error.
}
catch (Exception exc)
{
Log.LogFatalError(exc); // Logging fatal error.
}
跟踪由 UptoLog Satellite 收集,后者以包的形式发送跟踪日志。
这显示了跟踪是如何生成的
private void SomeMethod()
{
Log.LogTraceItem("Trace text before the code is executed");
// Some application code.
Log.LogTraceItem("Trace text after the code is executed");
}
UptoLog Satellite 收集时间测量并以包的形式发送测量值。时间测量通常可以通过两种不同的方式生成。
这显示了时间测量是如何生成的
// First method
private void SomeMethod()
{
TimeMeasure tm = Log.BeginTimeMeasure("Name of the time measurement");
// Some application code.
tm.EndTimeMeasure();
}
// Second method
private void SomeMethod()
{
using (Log.BeginTimeMeasure("Name of the time measurement"))
{
// Some application code.
} // The time measurement is automatically stopped even though
// the application code faults.
}
UptoLog 中的活动
UptoLog Satellite 在消费者中持有一个活动 GUID,该 GUID 必须在每次新活动开始时更新。当消费者调用 Web 服务时,Web 服务请求是 Web 服务外部启动的活动的一部分。因此,有必要在消费者处的 UptoLog Satellite 中读取活动 GUID(活动 ID),将活动 GUID 与 Web 服务调用一起发送,并将其传递给 Web 服务中的 UptoLog Satellite。
活动 GUID 像这样更新
Log.StartNewActivityId();
活动 GUID 随后可以在消费者处的 UptoLog Satellite 中像这样读取
Guid someActivityId = Log.CurrentActivityId;
通过 Web 服务调用接收到的活动 GUID 像这样传递给 Web 服务中的 UptoLog Satellite
Log.CurrentActivityId = someActivityId;
一般信息
UptoLog 2008 已发布,试用版可免费试用 30 天。您可以在此处下载 UptoLog 试用版。
您可以在 www.UptoLog.com 找到有关 UptoLog 的更多信息。