Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SLF4J最佳做法_Java_Logging_Maven_Slf4j - Fatal编程技术网

Java SLF4J最佳做法

Java SLF4J最佳做法,java,logging,maven,slf4j,Java,Logging,Maven,Slf4j,我正在编写一个库,并使用sfl4j处理日志记录 我认为这是一个好主意,只要每个人都能提供自己的实现,然后,我的应用程序提供的日志将得到正确处理 但是我不知道我是否必须提供一个作为可传递依赖项的实现 例如: 如果我只提供: <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4

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

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实现。另见