SLF4J 最佳实践

2024-04-07

我正在编写一个库,并使用 sfl4j 来处理日志记录。

我认为只要每个机构都可以提供自己的实现,那么我的应用程序提供的日志将得到正确处理,这是个好主意。

但我不知道是否必须提供实现作为传递依赖项。

示例:

如果我只提供:

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
    </dependencies>

我的lib的用户可以选择实现,但是如果他只是添加我的lib而不读取配置,这是行不通的

否则,如果我提供:

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.1</version>
        </dependency>
    </dependencies>

我的库在添加依赖项时就能正常工作,但如果用户想使用其他 slf4j,他将不得不排除我的库。

你对此有何看法?


You never提供日志实现。客户端应用程序必须这样做。否则这将违反关注点分离。不要对未知的客户做任何假设。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SLF4J 最佳实践 的相关文章

随机推荐

  • JPA/Hibernate - 与子实体一起分离实体

    我使用 JPA 2 和 Hibernate 3 6 8 作为实现 假设我们有一个实体Foo Entity public class Foo OneToOne private Bar bar 我需要将整个实体图从会话中分离出来 当我这样做时e
  • 使用 Java 将数据从 Cassandra 中的一个表复制到另一个表

    我正在尝试将所有数据从一个列族 表 移动到另一个列族 由于两个表都有不同的描述 我必须从 table 1 中提取所有数据并为 table 2 创建一个新对象 然后执行批量 aync 插入 我的 table 1 有数百万条记录 因此我无法直接
  • 如何使用Lua脚本语言打开Web套接字?

    作为初学者 我想在基于 Linux 的服务器上使用 Lua 打开一个 Web 套接字 该服务器应允许 Android 客户端连接到它 你能给我一些用Lua打开网络套接字的示例代码吗 您两周前已经问过同样的问题并得到了回答 LUA 脚本 We
  • 在 html5 Canvas 上移动对象

    我使用 fillText 选项在 html5 canvas 对象上放置了一个文本 问题是我需要移动文本位置或更改已渲染文本的颜色 很快我需要知道如何操作画布元素的特定子元素 这将在画布上移动一个小圆圈 var can document ge
  • 为什么 ng-bind-html 不显示任何内容?

    我正在显示一个包含 HTML 代码的字符串 div style font size 14px div put 它显示 HTML 代码而不是解释元素 当我使用ng bind and ng bind unsafe 它什么也没显示 如何获取要解析
  • 使用 df.merge 填充 df 中的新列给出奇怪的匹配

    我刚刚发现导致此问题的 2 个问题 请参阅下面的解决方案 我想基于另一个数据帧在我的数据帧 df 中创建一个新列 基本上 df2 包含我想要插入 df 的更新信息 为了复制我的真实情况 gt 1m 行 我将用简单的列填充两个随机 df 我使
  • 如何使用app.config.from_envvar? (烧瓶)

    如何使用app config from envvar 我查看了 Flask 文档并搜索了这个主题 我所知道的就是这样做 DATABASE flaskr db DEBUG True SECRET KEY development key app
  • 在 iOS 中将电子邮件/密码保存到钥匙串

    我对 iOS 开发非常陌生 所以如果这是一个新手问题 请原谅我 我的应用程序有一个简单的身份验证机制 它需要用户的电子邮件地址和密码 我还有一个开关 上面写着 记住我 如果用户打开该开关 我想保留他们的电子邮件 密码 以便将来可以自动填充这
  • 确定设备公网ip

    有谁知道如何获取 Android 设备的公共 IP 地址 我正在尝试运行服务器套接字 只是尝试简单的 p2p 这需要告知本地和远程用户彼此的公共IP 我确实找到了这个线程如何从代码中获取设备的IP地址 https stackoverflow
  • Perl:比较两个 CSV 文件并打印差异

    我是 Perl 的菜鸟 而且我很难完成这件事 我有两个单列 CSV 文件 我正在尝试将差异打印到第三个文件 File1 123 124 125 126 File2 123 124 127 Expected Output 125 126 12
  • 托管 clr 并捕获线程异常

    我正在尝试编写一个可以加载托管插件的插件系统 如果出现任何异常 主机应该能够卸载插件 对于我的 poc 我有一个 C 示例代码库 它会抛出这样的异常 public static int StartUp string arguments Co
  • @property 的详细名称

    我有一个 property called name in my class Person models Model first name models CharField Given name max length 255 last nam
  • 没有静态方法dispatchUnhandledKeyEventPre

    每当我按下后退按钮或菜单按钮时 我的应用程序就会崩溃 我正在使用 androidx 和 kotlin 下面是我的日志猫 07 06 18 47 25 538 22303 22303 com mnkafe mnkafe E InputEven
  • 如何获取其键与给定正则表达式匹配的哈希元素?

    如何获取其键与给定正则表达式匹配的哈希元素 不使用任何模块 例如 Tie Regexp Hash 如何实现这一目标 s as2 queen gt 1 as1 queen gt 2 my regex qr queen if s regex p
  • 带分号的元刷新

    我在网址中使用分号作为查询字符串分隔符 而不是和 我的问题是 当我尝试对查询字符串中带有分号的 url 进行元刷新时 它会将其转换为 253b 因此 转发时 我无法读取查询字符串参数 因为分隔符不再存在 例子 http domain com
  • 使用 facebook graph api 获取 Instagram 自己的/自我提要

    我对使用 Instagram API Graph API 很陌生 但找不到问题的答案 由于 Instagram API 已被弃用 现在我们必须处理 instagram facebook graph API 我知道新程序 https deve
  • 读取 csv 文件并使用 php 创建另一个 csv 文件

    我有一个 csv文件 当我通过记事本打开它时 它看起来像 ID501501503502 当我通过 php 在浏览器中打印它时 它看起来像 ID 501 501 503 502 我的代码是 handle fopen MonC1 csv r d
  • ASP.NET Core DbContext 注入

    我有一个ConfigurationDbContext我正在尝试使用 它有多个参数 DbContextOptions and ConfigurationStoreOptions 如何将此 DbContext 添加到 ASP NET Core
  • getDrawingCache 未更新

    我在 onDraw 函数中调用 getDrawingCache 问题是它仅在第一次包含对画布的更改 此后 它根本不会随着新更改而更新 这是我的代码 paintAction draw canvas if paintAction isPerma
  • SLF4J 最佳实践

    我正在编写一个库 并使用 sfl4j 来处理日志记录 我认为只要每个机构都可以提供自己的实现 那么我的应用程序提供的日志将得到正确处理 这是个好主意 但我不知道是否必须提供实现作为传递依赖项 示例 如果我只提供