Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception 错误日志数据库--适用于许多应用程序_Exception_Logging_Error Logging - Fatal编程技术网

Exception 错误日志数据库--适用于许多应用程序

Exception 错误日志数据库--适用于许多应用程序,exception,logging,error-logging,Exception,Logging,Error Logging,我有一堆现有的客户机/服务器应用程序,它们目前正在快速运行。偶尔,客户机会希望添加某种类型的web界面来访问部分数据。这些通常是定制的,尽管有些是“通用的”;但是每个人在自己的VM中都有自己的“实例” 我想要的是一个集中的区域来捕获并记录这些虚拟机上出现的任何错误 我正在考虑创建一个新的数据库,并设置一个WCF服务,以使这些Web应用程序中的每一个都能够在我的集中式数据库以及本地事件日志中创建一个日志条目 那是个糟糕的设计吗 更新 webapps位于2003/IIS6和2008/IIS7上,内置

我有一堆现有的客户机/服务器应用程序,它们目前正在快速运行。偶尔,客户机会希望添加某种类型的web界面来访问部分数据。这些通常是定制的,尽管有些是“通用的”;但是每个人在自己的VM中都有自己的“实例”

我想要的是一个集中的区域来捕获并记录这些虚拟机上出现的任何错误

我正在考虑创建一个新的数据库,并设置一个WCF服务,以使这些Web应用程序中的每一个都能够在我的集中式数据库以及本地事件日志中创建一个日志条目

那是个糟糕的设计吗

更新


webapps位于2003/IIS6和2008/IIS7上,内置于ASP.NET中。许多实例位于一对web服务器上,但许多实例将部署到单个VM。

您应该看看ELMAH(错误日志记录模块和处理程序)()以及Orbit One的异常报告器()如果将它们结合起来,您就可以在一个集中的位置覆盖整个企业范围的错误报告。

这正是我们实现它的方式

数据库中有3个表:

Event Types
------------ 
EventType int 
EventDescription varchar(50)


MonitoredSystems
---------------
SystemID int
SystemName varchar(50)
SystemDescription text


Events
-------
RecordID bigint
EventTime datetime
SystemID int FK
EventText text
EventType int FK
Acknowledged bit
我们还建立了一个网站,在那里我们可以观看这些活动。“确认”字段允许我们设置一个视图,将其命名为“未确认的关键问题”,以便我们可以快速查看任何新问题,并在阅读时确认这些问题

我们知道还有其他工具可以为我们做到这一点,但没有一个工具比我们自己的自制版本更容易集成,我们现在在我们构建的每个应用程序中都使用它。我们有一些其他定制,我在这里没有提到,其他工具没有提供现成的

所以我认为你的想法很好。如果您自己构建它,您可以自定义它,使其以您想要的方式工作。但是,我建议至少研究一下Log4net等工具。

如果您经常登录(debug/info/warning),请确保RPC调用是异步完成的

我建议采用更灵活的数据结构

Events
-------
RecordID bigint
EventTime datetime
EventLevel text 
SystemID text
EventText text
EventType text
Acknowledged bit

EventProperties
-------
RecordID bigint
key text
value text

EventProperties允许日志应用程序记录可能有用的任何信息,而无需提前定义此类属性。请注意,SystemID没有任何限制,允许添加不带配置的系统。

能否提供有关您使用的平台的更多详细信息?听起来像是Windows+IIS…?+1在轨道上运行一个人的异常报告器。我以前没见过,它看起来很光滑。Orbit One的Exception Reporter看起来很像我们自己开发的应用程序。我喜欢它。我知道这是一个非常古老的线程,但我想知道更多关于您的实现,以及在过去几年中它是如何得到增强的。例如,您是否只是将一个代码片段插入到应用程序中、从类继承,还是必须在许多类似的try-catch块中编写对它的调用?谢谢。:)简短的版本是,我们在每个应用程序的代码中都有WriteToError日志调用。代码很简洁——它是对web服务的调用。我们总是在global.asax(webapps)中放入全局错误处理程序,对于WinForms,我们处理System.Windows.Forms.Application.ThreadException和AppDomain.CurrentDomain.UnhandledException事件。我们通常在每个应用程序的静态类中设置错误日志功能,以便其他类可以简单地调用“监工日志记录程序.LogError(ErrorMessage,System.Environment.MachineName,SeverityLevel)”来简单地记录消息。