我正在编写一个库,并使用sfl4j来处理日志记录。
我认为这是一个好主意,只要每个人都可以提供自己的实现,然后我的应用程序提供的日志将得到正确处理。
但是我不知道我是否必须提供实现作为传递依赖。
范例:
如果我仅提供:
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
我的库的用户可以选择实现,但是如果他只是添加我的库而不读取配置,那么它将无法工作
否则,如果我提供:
<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,则他必须排除我的库。
您对此有何看法?
最佳答案
您从不提供日志实现。客户端应用程序必须这样做。否则,这将违反关注点分离。不要对未知的客户做任何假设。
关于java - SLF4J最佳做法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7107690/