Hi all,

Recently I upgraded my downstream project's dependency to the latest
master branch and found no logs are printed now.

```
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
```

Finally I found it's caused by #22391 [1], which upgrades the
slf4j-api version from 1.7.32 to 2.0.13. It's really a harmful change
to downstream projects. For example, assuming there is a project that
depends on the pulsar-client-all, it might adds a SLF4J binding
dependency like:

```xml

<dependency>
  <groupId>org.apache.pulsar</groupId>
  <artifactId>pulsar-client-all</artifactId>
  <version>3.2.2</version>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.36</version>
</dependency>
```

Yeah it works well. However, after upgrading the pulsar-client-all to
the latest master, users have to upgrade the slf4j-simple to 2.0.13,
otherwise the logging won't work.

Things become worse when the downstream project is large. I tried
adding the slf4j-simple or slf4j-reload4j 2.0.13 dependency to the
protocol handler project that depends on pulsar-broker and none of
them works. It has already wasted me much time debugging this logging
issue. I'm really interested in what significant change that slf4j 2.x
brings, except a higher version number that might make some developers
think it's better?

Therefore, I suggest reverting #22391 unless there is a significant
advantage of slf4j 2.0.13.

[1] https://github.com/apache/pulsar/pull/22391

Thanks,
Yunze

Reply via email to