在java的体系里,主要有slf4j和common-logging两种日志体系接口。实现的框架有很多,主流的诸如logback、log4j等。common-logging挂载的日志实现常为log4j。如果有多个实现,之后绑定其中的一个。只有jul是个例外,因为是java自带jdk实现,没法去重新那些类,这个地方根据jul的handler扩展机制实现了一个slf4j的handler然后把日志写到slf4j上面。同时要生效的话,还要修改jre/lib/logging.properties把新的handler配置到.handlers属性中。实际项目应用的时候要注意,桥接和被桥接的包不能同时出现,不然会出现死循环了,比如sfl4j既桥接了log4j又被log4j桥接,那log4j输出调用会指向slf4j,slf4j又指向log4j如此循环。一定要注意排除掉无用的包。生产建议:slf4j-api下挂载的实现只保留logback,上层的日志打印桥接可以存在都指向到slf4j。
暂无评论