代码之家  ›  专栏  ›  技术社区  ›  James McMahon

在日志系统中分离生命周期事件的适当方法是什么?

  •  1
  • James McMahon  · 技术社区  · 16 年前

    我想有一种方法可以很好地了解当前的系统状态,哪些组件出现了问题,哪些组件出现了问题,它们已经运行了多长时间等等。我认为日志记录,特别是与自定义附加器(我使用的是log4j)相结合,是解决方案的一个很好的组成部分,它确实有助于特别分析和实时监视。

    通常,我会将生命周期事件分类为信息级别,但我真正想要的是将它们与信息中发生的其他事件分开。我可以创建自己的级别,生命周期。

    生命周期事件发生在应用程序层次结构的不同区域和不同级别上,它们也发生在与我要将它们与之分离的其他事件相同的区域中。我可以介绍一些常见的生命周期管理,并使用它来区分事件和其他事件。例如,所有具有生命周期的组件都可以实现一个特定的接口,我按其名称记录。

    其他地方有没有这样做的好例子?考虑因素是什么?

    4 回复  |  直到 16 年前
        1
  •  0
  •   Jens Schauder    16 年前

    这听起来不像是一个日志级别。它更像是一个独立的记录器。

    每个人使用的典型记录器层次结构基于包名。但我建议使用单独的层次结构,使用前缀。如果使用LIFECYCLE作为类和包名称的前缀,则可以使用log4j或slf4j的标准配置选项或几乎所有合理的日志框架来打开、关闭这些消息,或将它们路由到特定的位置。

        2
  •  1
  •   Riduidel    16 年前

    你想过用不同的记录器来记录这些事件吗?

    我认为这是处理这类问题的典型方法。

        3
  •  0
  •   codepoke    16 年前

    log4使用ThreadContext.Stacks[“NDC”](以前只是NDC)的概念 http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/NDC.html ). 在每个生命周期事件中,您将当前上下文推送到堆栈上,并在该事件结束时再次将其从堆栈中弹出。小心完成,它可以给你一个相当方便的跟踪,你在哪里在调用序列与每个日志条目。

        4
  •  0
  •   SteveD    16 年前

    日志记录并不是最好的解决方案。事实上,你说的自定义日志级别是一个明确的设计'气味'。

    http://code.google.com/p/maexo/