python日志记录模块有一个通用模式(ex1,ex2),其中每个模块中为每个python模块获取一个新的日志记录器对象。为什么要在每个新模块中获取新的记录器对象?
我不是盲目追随模式的粉丝,所以我想多了解一点。
为什么要每一个新的模块中的一个新的记录器对象?
为什么不让每个人都使用相同的根记录器并将格式器配置为%(module)s
?
是否有示例,其中该模式是必要的/需要(即某种性能原因[1],因为)?
[1] 在一个多线程的python程序中,是否存在某种通过使用多个日志记录对象修复的隐藏同步问题?
相关的问题,但可能需要一个新的计算器问题本身:如果您有多个日志记录都使用相同的控制台,流对象,和/或文件处理程序是有一个隐藏的同步问题(只有一个线程可以读/写的文件一次)? –
'logging'被定义为线程安全的,因此记录器*可以使用锁写入其日志。这意味着在多线程环境中使用是安全的。但是请注意,在unix系统上使用多处理时,这是一个众所周知的问题:默认情况下'fork'不会复制锁并在罕见情况下导致死锁。看[这里](http://stackoverflow.com/questions/24509650/deadlock-with-logging-multiprocess-multithread-python-script)。 – Bakuriu