SLF4J最佳实践

时间:2011-08-18 12:50:40

标签: java logging maven slf4j

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

我的lib只在向其添加依赖项时才能正常工作,但如果用户想要使用其他slf4j,则必须排除我的。

你对此有何看法?

1 个答案:

答案 0 :(得分:13)

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