gpt4 book ai didi

登录 Scala

转载 作者:行者123 更新时间:2023-12-03 04:18:20 28 4
gpt4 key购买 nike

在 Scala 应用程序中进行日志记录的好方法是什么?与语言哲学一致的东西,不会使代码困惑,并且维护成本低且不引人注目。以下是基本要求列表:

  • 简单
  • 不会使代码困惑。 Scala 以其简洁而著称。我不希望我的一半代码用于记录语句
  • 可以更改日志格式以适应我的企业日志和监控软件的其余部分
  • 支持日志记录级别(即调试、跟踪、错误)
  • 可以记录到磁盘以及其他目的地(即套接字、控制台等)
  • 最低配置(如果有)
  • 在容器(即网络服务器)中工作
  • (可选,但很高兴拥有)作为语言的一部分或作为 Maven 工件,因此我不必破解我的构建即可使用它

我知道我可以使用现有的 Java 日志记录解决方案,但它们至少在上述两个方面失败,即困惑和配置。

感谢您的回复。

最佳答案

slf4j 包装器

大多数 Scala 日志库都是 Java 日志框架(slf4j、log4j 等)的一些包装器,但截至 2015 年 3 月,幸存的日志库都是 slf4j。这些日志库提供某种 log 对象,您可以调用 info(...)debug(...) 等. 我不是 slf4j 的忠实粉丝,但它现在似乎是主要的日志框架。这是SLF4J的描述:

The Simple Logging Facade for Java or (SLF4J) serves as a simple facade or abstraction for various logging frameworks, e.g. java.util.logging, log4j and logback, allowing the end user to plug in the desired logging framework at deployment time.

在部署时更改底层日志库的能力为整个 slf4j 系列记录器带来了独特的特性,您需要注意这一点:

  1. 类路径作为配置方法。 slf4j 知道您正在使用哪个底层日志记录库的方法是通过某个名称加载类。我遇到过这样的问题:自定义类加载器时 slf4j 无法识别我的记录器。
  2. 因为简单外观试图成为共同点,所以它仅限于实际的日志调用。也就是说,无法通过代码进行配置。

在大型项目中,如果每个人都使用 slf4j,那么能够控制传递依赖项的日志记录行为实际上会很方便。

Scala 日志记录

Scala Logging由 Heiko Seeberger 编写,作为其 slf4s 的继承者。 。它使用宏将调用扩展为 if 表达式,以避免潜在昂贵的日志调用。

Scala Logging is a convenient and performant logging library wrapping logging libraries like SLF4J and potentially others.

历史记录器

  • Logula ,由 Coda Hale 编写的 Log4J 包装器。以前很喜欢这个,现在放弃了。
  • configgy ,一个 java.util.logging 包装器,在 Scala 早期曾很流行。现已废弃。

关于登录 Scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/978252/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com