代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

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

  •  5
  • Nate CSS Guy  · 技术社区  · 15 年前

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

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

    我正在考虑创建一个新的数据库,并设置一个wcf服务,使这些webapps中的每一个都能在我的集中数据库以及本地事件日志中创建日志条目。

    那是个坏设计吗?

    更新

    webapps在2003/iis6和2008/iis7上,内置于ASP.NET。许多实例位于一对Web服务器上,但许多实例将部署到单个虚拟机上。

    3 回复  |  直到 13 年前
        1
  •  4
  •   David    15 年前

    这正是我们实现它的方法。

    数据库中有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等工具。

        2
  •  3
  •   Andrew Siemer    15 年前

    您应该看看elmah(错误日志模块和处理程序)( http://code.google.com/p/elmah/ )结合了轨道一个人的例外报告者( http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343 )合并后,可以在集中位置为企业范围内的错误报告提供覆盖范围。

        3
  •  0
  •   MaxH    13 年前

    如果您经常记录(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没有任何约束,这允许在没有配置的情况下添加系统。