Closed fu050409 closed 1 year ago
根据loguru文档,logger是可以copy的。另外loguru官方是不推荐独立复制logger,这个feature并没有很高的优先级,可能会在未来被实现。
根据loguru文档,logger是可以copy的。
多谢提醒,这个我后来也查到了,它是用copy.deepcopy
方法来实现复制一个Logger
类出来,确实可以实现我的需求。
不过我的意思是可以把这个方法内置到Nonebot2
里面,这样可以方便第三方插件的日志管理,我这个其实和官方说的那个原理一样,我这个纯粹是重新声明了一个Logger
。
不过这也只是一个建议,具体做不做还是看你们的需求。
从使用角度来说,这个问题你应该去错误修改logger的库提出,而不是在这里。loguru的全局logger设计是为了在app或框架层面进行的logger自定义,而作为一个依赖包却修改全局logger的行为是不正确的。
从使用角度来说,这个问题你应该去错误修改logger的库提出,而不是在这里。loguru的全局logger设计是为了在app或框架层面进行的logger自定义,而作为一个依赖包却修改全局logger的行为是不正确的。
根据loguru文档,logger是可以copy的。另外loguru官方是不推荐独立复制logger,这个feature并没有很高的优先级,可能会在未来被实现。
我理解了你的意思了。
说实话我其实不是非常理解loguru官方为什么不建议,难道是终端标准输出的问题?似乎在线程中loguru不同的Logger会争抢输出,但是除此之外我没有遇到问题。
如果不需要的话,老哥可以close这个issue了,打扰你的时间了。
loguru需要通过enqueue来进行多logger的同步协同输出以保证输出的正确显示,会增加很多开销。
希望能解决的问题
Nonebot2内置了日志系统,看起来曾经使用的是Python自带的
logging
,后来更改为loguru
。之前有位老哥在我发布插件的时候提醒我,可以使用
Nonebot2
自带的logger
,这可以的确可以统一日志管理。而
loguru
是使用非常广泛的日志系统(主要是比原版好看),但时候如果某个插件包含的外置依赖包中使用了loguru
、作者不怎么喜欢Nonebot2中loguru
的输入格式、作者希望仅仅更改在他的插件中日志的level, 又或者作者的plugin
或某些外置依赖包中可能存在这样的代码:而这这种情况下,这一段代码会篡改
loguru
在Nonebot2中的设置,变成这样:这就非常难受了。
描述所需要的功能
我的意见是可以将Nonebot2的日志独立出来,使得如果存在自定义
logger
的情况下与Nonebot2
互不干扰,如果作者希望在插件中使用Nonebot2
的logger
,那么他可以直接:我在之前研究
loguru
的时候,一直没找到怎么独立一个不相干的logger
出来的方案(大概因为我太菜了?),不管怎么样,都告诉我拿logger.add()
,好家伙一下子一个日志输出两行,本来就是为了美观,这下子可是把美观给整明白了。最后我找到
loguru
的源码,找到了解决方案:一个项目中可能有很多不同的部分,就拿
Nonebot2
来举例子,它包含adapter
、plugin
等等的多个部分,同时它的插件众多,我们无法确认什么时候就会出现日志管理冲突的情况,直接运行以上代码,我们得到:这样的情况下,我觉得如果
Nonebot2
没有统一日志输出需求的情况下,可以试试我的方案。