SLF4J最佳实践

Chr*_*phe 4 java logging slf4j maven

我正在写一个库,我使用sfl4j来处理日志.

我认为这是个好主意,只要每个机构都能提供它自己的实现,然后,我的应用程序提供的日志将被正确处理.

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

例:

如果我只提供:

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
    </dependencies>
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

我的lib只在向它添加依赖项时才能正常工作,但是如果用户想要使用其他slf4j,他将不得不排除我的.

你对此有何看法?

Mic*_*l-O 13

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

  • 另请注意,从SLF4J版本1.6.0开始,如果在类路径上找不到绑定,则slf4j-api将默认为nop-implementaiton.另见http://slf4j.org/manual.html#libraries (3认同)