Closed OskarKjellin closed 8 months ago
HI @OskarKjellin, could you define an appender in your log4j configuration for net.snowflake.client.jdbc.internal
? Alternatively, we are also releasing an unshaded version of the SDK. They are typically released in a few days after the shaded release. 2.1.0-unshaded
should be released in a few days.
I could, but I want to bridge it to slf4j, not add an appender. We'd like to keep using the shaded because otherwise we'll have a ton of classpath issues for the other classes.
Is there a reason why one logging facade (slf4j) is not shaded while another one is (commons-logging)? This mostly seems like an oversight to me, not the wanted behavior
I checked SDK dependencies, and it neither directly nor transitively depends on commons-logging
, so it is also not shading it. The class net.snowflake.client.jdbc.internal.apache.http.client.protocol.RequestAddCookies
is shaded into the Snowflake JDBC driver, so even if you used the unshaded SDK, it wouldn't help in this case.
I am still not sure if I understand the issue, though. You mention you are bridging commons-logging
to slf4j-api
(via jcl-over-slf4j.jar
?), but the error says log4j:WARN No appenders could be found for logger....
. Log4j is your implementation of slf4j-api? Doesn't it mean that the log message got bridged correctly, if log4j is complaining here?
Hmm, so this issue should be with the JDBC driver?
Log4j is not our implementation. The snowflake jdbc driver also includes a shaded version of log4j :(
Yeah, please open this issue in the JDBC driver repo: https://github.com/snowflakedb/snowflake-jdbc/issues
Hmm, maybe the jdbc driver doesn't include a shaded version of log4j. Seems to be something else, but still shouldn't shade commons-logging imo
The current approach of shading all dependencies also means that when the apache http client is shaded, the logging it uses (apache commons logging) also becomes shaded. When this is shaded it's not possible to use the commons logging to slf4j bridge, meaning that our logs get filled with:
And we don't get any logs from apache http client.
commons-logging:commons-logging
should probably be excluded from shading just asorg.slf4j:slf4j-api
is