Java SLF4J最佳做法
我正在编写一个库,并使用sfl4j处理日志记录 我认为这是一个好主意,只要每个人都能提供自己的实现,然后,我的应用程序提供的日志将得到正确处理 但是我不知道我是否必须提供一个作为可传递依赖项的实现 例如: 如果我只提供:Java SLF4J最佳做法,java,logging,maven,slf4j,Java,Logging,Maven,Slf4j,我正在编写一个库,并使用sfl4j处理日志记录 我认为这是一个好主意,只要每个人都能提供自己的实现,然后,我的应用程序提供的日志将得到正确处理 但是我不知道我是否必须提供一个作为可传递依赖项的实现 例如: 如果我只提供: <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4
<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>
org.slf4j
slf4j api
1.6.1
my lib的用户可以选择实现,但如果他只是添加my lib而不读取配置,则无法工作
否则,如果我提供:
<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>
org.slf4j
slf4j api
1.6.1
org.slf4j
slf4j简单
1.6.1
我的库在添加依赖项时会正常工作,但是如果用户想要使用其他slf4j,他必须排除我的
您对此有何看法?您从未提供日志实现。客户端应用程序必须这样做。否则,这将违反关注点分离。不要对未知客户做任何假设。这是一个专业问题吗?如果是这样,请标记为suchThank's,对我来说,这是一个一般性问题,但在我的示例中,我使用maven。所以我应该给它贴上标签;)当你说如果你不提供一个实现它将不起作用,你的意思是你的库将不起作用或者日志记录将不起作用?还要注意,从SLF4J版本1.6.0开始,如果在类路径上找不到绑定,SLF4J api将默认为nop实现。另见