I'm curious, why doesn't 'provided' work? We use slf4j exclusively in our code base and log4j gets pulled in via some transitive dependency. The provided scope seems to work well for us in that case.