Python子进程logging config在Win和Linux下表现不一致的问题

Python父进程通过logging.basicConfig,设定日志文件的路径,子进程再次通过basicConfig设定另一个新的路径。这个操作,在Windows系统和Linux下表现不一致。

区别在于,Windows下将打开不同的文件句柄,写入2个不同的文件 。而在Linux下,则config看起来无效,子进程和父进程使用同一个文件描述符,第二次config无效。(解决的方法文末补充)

这个程序在Windows的执行结果是

可以看到,日志写入了两个不同的文件。并且Logger ID不一样

在Linux下的执行结果是

两个进程的日志都写到了test.log中。 并且 Logger ID 和 fd是一样的

解决的办法

子进程在set_log之前,先 reload(logging), test_func变成

修改之后,在Linux执行,日志同样会写入不同的文件

Leave a Reply