language-agnostic - 日志库有什么用?

标签 language-agnostic logging

这可能是一个愚蠢的问题,因为我的大部分程序都是由一个人的科学计算研究原型(prototype)和开发相对低级的库组成的。我以前从未在大型企业环境中进行过编程。我一直想知道,与仅使用良好的老式打印语句或文件输出、简单的编程逻辑和一些全局变量来确定日志记录的详细程度相比,日志库使哪些主要事情变得容易得多?你怎么知道一些打印语句或一些基本的文件输出不会削减它,你需要一个真正的日志库?

最佳答案

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

  • 现成的日志库很容易在不到 5 分钟的时间内插入和播放。
  • 日志库允许对每个语句进行不同级别的日志记录(FATAL、ERROR、WARN、INFO、DEBUG 等)。
  • 您可以打开或关闭日志记录,以便在运行时获得更多更少的信息。
  • 高度线程化的系统有助于找出线程在做什么。日志库可以记录有关线程、时间戳的信息,而普通打印语句则不能。
  • 大多数允许您仅打开部分日志记录以获取更多详细信息。因此,一个系统可以记录调试信息,而另一个系统只能记录 fatal error 。
  • 日志库允许您通过外部文件配置日志记录,以便在生产中轻松打开或关闭,而无需重新编译、部署等。
  • 3rd 方库通常会记录,因此您可以像控制系统的其他部分一样控制它们。
  • 大多数库允许您根据标准将部分或全部语句记录到一个或多个文件中。因此,您可以同时登录控制台和日志文件。
  • 日志库允许您轮换日志,因此它将根据许多不同的标准保留多个日志文件。假设在日志获得 20MB 后轮换到另一个文件,并保留 10 个日志文件,以便日志数据始终为 100MB。
  • 一些日志语句可以编译进或编译出(取决于语言)。
  • 可以扩展日志库以添加新功能。

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

    关于language-agnostic - 日志库有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580795/

    相关文章:

    functional-programming - 有什么方法可以进行基于示例的编程吗?

    java - 控制台上的 DBCL 消息

    unit-testing - 对调用我已经在测试的另一种方法的方法进行单元测试是不好的做法吗?

    java - 使用 AnnotationConfigApplicationContext 时禁用 Spring 日志记录

    spring - 记录 @Controller 请求 Spring Boot

    c# - log4net 不给出任何响应或记录

    python - 打印语句不会出现在带有日志记录模块的控制台上

    language-agnostic - 使用大量静态方法是一件坏事吗?

    找到最少的矩形以覆盖一组矩形而不重叠的算法

    language-agnostic - 在可执行程序的上下文中, "binaries"和 "executables"之间的区别在哪里?