呵呵,你说的对,没有logback-over-slf4j,想不到有任何理由不用logback而去使用log4j实现。 系统里已有直接使用 logback 记录日志的情况下,没有方法再去改变了,唯有接受现实
我没有理解错,倒是觉得你对slf4j的理解有些误区。 首先我假设你公司的那2个基础包没有直接把log4j logback的jar和配置直接集成在里面,只是使用了它们的api。(应该不会那么傻直接把第三方jar直接嵌入基础包里吧) 你在自己的项目里引用基础包,并依赖以下几个 slf4j-api logback-classic, logback-core log4j-over-slf4j (maven里一定要排除掉log4j,保证项目lib里没有log4j) jcl-over-slf4j(maven里一定要排除掉log4j,保证项目lib里没有commong logging) 按logback方式配日志配置文件,这样整个项目的日志都经过slf4j,包括基础包里的那些直接用log4j api的代码。
用 log4j-over-slf4j.jar 代替 log4j.jar, 使用了它以后,别忘了把工程里的log4j去掉。
把log4j和logback的直接调用代码,查找替换成slf4j! 代码直接写死的调用具体实现,你还想怎么换? 不然,只能新代码调用接口了。
private static Logger logger = LoggerFactory.getLogger(HelloWorldController.class.getName()); 这样取得 logger,是不需要具体依赖 Log4j 还是 Logback,正 classpath 里发现了谁的 jar 包就用谁的
private static Logger logger = LoggerFactory.getLogger(HelloWorldController.class.getName());
为了使程序不依赖具体的日志实现 没看懂这句话
67,550
社区成员
225,864
社区内容
加载中
试试用AI创作助手写篇文章吧