sofastack / sofa-common-tools

sofa-common-tools is a library that provide some utility functions to other SOFA libraries.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

咨询几个碰到的问题sofa-common-tools是否可以解决

KevinHe666 opened this issue · comments

commented

您好,继续咨询几个问题:
1.假如我们现在的业务系统中已经引入了三方包,三方包用log4j打印的,我们业务系统准备用logback打印日志,那是说我们的业务系统要用sofa-common-tools打印日志吗?还是要求三方包改用这个框架打印日志?
2.假如好几个三方包有的用log4j打印日志,有的用logback打印日志,怎么解决他们的冲突问题?三方包我们无法要求别人修改代码了.
3.日志隔离的具体应用场景是什么那?我们的业务系统虽然引入了很多三方包,但是也没出现过日志冲突的问题,或者出现了我们可以通过调整配置也能解决他们冲突的问题,实现三方包和我们的业务系统同时打印日志.
4.动态日志级别的具体应用场景是什么那?感觉平时也用不到啊?

@KevinHe666

  1. 业务系统还可以继续使用 log4j 去打印日志,不过由于引入你的依赖,并使用 logback 打印。如果一定要达到这个目的的话,就需要业务系统同时引入 logback 和 log4j 的日志实现。另,一般我们的实践经验是,业务系统用了哪个日志实现,你的这个依赖就用 log4j 去打,没必要强制用户还要引入 logback 的依赖,虽然可以做到。因为应用是业务系统的,其他的依赖包应该由业务系统决定日志实现,强制它可能接入成本高些。

  2. 我们是实践是,大家统一起来,不应该去面向日志实现编程,而应该通过 sofa-commmon-tools 都面向日志编程接口 slf4j 去编程,需要推动改进。

  3. 场景:主要是基础 jar 提供给别人用,要打印日志,如果自己强依赖了日志实现,就要被接入方必须引入相应的日志实现,通过此 sofa-common-tools 保证基础 jar 提供方不去强制绑定一个日志实现,有业务选择实现,我们的基础jar 均能通过其完成日志打印,接入成本和使用成本被变得更低。

  4. 这个能力,可以通过 API 动态的设置日志级别完成切换,而不需要重启,当然调用方需要有不同的触发条件触发;之后我们会慢慢开放动态配置中间件,配合起来效果会更好。现在是 API 层面提供了这个能力。关键词:不要重启来动态调整日志级别。