我正在编写一个库,并使用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/

10-13 09:10