代码之家  ›  专栏  ›  技术社区  ›  dsimcha

日志库的用途是什么?

  •  5
  • dsimcha  · 技术社区  · 14 年前

    4 回复  |  直到 14 年前
        1
  •  2
  •   chubbsondubs    14 年前

    日志记录有助于调试问题,特别是当您转到生产环境,并且问题发生在您无法控制的机器上时。最好的计划永远不会在与敌人的接触中幸存下来,而日志记录可以帮助你在面对真实世界的数据时跟踪战斗的进展。

    1. 现成的日志库很容易在不到5分钟的时间内插入和播放。
    2. 日志库允许每个语句进行不同级别的日志记录(致命、错误、警告、信息、调试等)。
    3. 高度线程化的系统有助于区分线程在做什么。日志库可以记录关于线程、时间戳的信息,而普通的print语句不能记录这些信息。
    4. 大多数允许您只打开日志记录的一部分以获得更多细节。因此,一个系统可以记录调试信息,而另一个系统只能记录致命错误。
    5. 日志库允许您通过外部文件配置日志记录,以便在生产环境中轻松打开或关闭日志记录,而无需重新编译、部署等。
    6. 大多数库允许您根据条件将部分或全部语句记录到一个或多个文件中。因此,您可以同时登录到控制台和日志文件。
    7. 一些日志语句可以编译入或编译出(依赖于语言)。
    8. 可以扩展日志库以添加新功能。

    当您开始需要这些特性时,您需要开始使用日志库。如果您发现自己正在更改程序以获得其中一些功能,您可能需要查看一个好的日志库。它们易于学习、设置和使用,而且无处不在。

        2
  •  2
  •   Edmund    14 年前

    在某些环境中,日志记录的要求可能会发生变化,但更改或部署新的可执行文件的成本很高。(即使您拥有源代码,由于内部官僚作风,向程序中添加单行日志记录更改也是不可行的。)

    日志库提供了一个框架,程序将使用它来发出各种各样的消息。这些可以通过源(例如,它首先被发送到的记录器对象,通常对应于发生事件的类)、严重性等来描述。

    在运行期间,消息的实际传递是使用一个“容易”编辑的配置文件来控制的。在正常情况下,大多数信息可能会完全被掩盖。但是,如果情况发生变化,则更简单的修复方法是启用更多消息,而无需部署新程序。

    以上描述了我理解的理想日志框架;在实践中,我在Java和Python中使用了它们,但在这两种情况下,我都没有发现它们值得增加复杂性。:-(

        3
  •  1
  •   blowdart    14 年前

    它们是用来记录东西的。

    或者更严重的是,为了节省您自己编写日志的时间,您可以灵活地选择日志的存储位置(数据库、事件日志、文本文件、CSV、发送到远程web服务、由pixies在天鹅绒垫上交付)以及运行时记录的内容,而不必重新定义全局变量然后重新编译。

    如果你只为自己写,那么你不太可能需要一个,它可能会引入一个你不想要的外部依赖,但是一旦你的库开始被其他人使用,那么拥有一个日志框架就可以很好地帮助你的用户和你追踪问题。

        4
  •  0
  •   dash-tom-bang    14 年前

    我知道当我有多个子系统具有“详细日志记录”时,日志库是有用的,但是我只想看到其中一个子系统的详细数据。

    if my_logging_level == DEBUG then print("An error occurred"); 另外,日志系统可以将文件/行信息塞进消息中,然后完全想象你可以很容易地将它们重定向到多个目标(文件、TTY、调试器、网络套接字…)。