头次用这个 发现日志文件里记录的时间点都那么接近 都是差不多程序运行结束时的时刻
这是怎么回事?之前用 js,java 啥的不是这样啊
1
nowheremanx 2021 年 6 月 1 日
flush 一下?
|
2
simple2025 2021 年 6 月 1 日
不应该呀
|
3
ClericPy 2021 年 6 月 1 日
无代码猜不到
|
4
jdhao 2021 年 6 月 1 日 via Android 上代码啊,没代码你说个蛋蛋
|
5
leavic 2021 年 6 月 1 日 确实不是实时的,尤其是有 Exception 的时候,logging 还没完成程序就结束了都可能。
|
6
lzjamao 2021 年 6 月 1 日 这要看 logging 的内部实现了。
IO 分为有缓冲和无缓冲的。 有缓冲,不是立即写到磁盘的。 stderr 是不做缓存立即写的,你可以换个 error 输出接口试试 或者找下是否有接口,设置缓冲区模式 setvbuf |
7
luckylo 2021 年 6 月 2 日 via Android
确实是。我也碰到过。还把别人怼了。结果自己搞错了。尴尬。
|
8
myCupOfTea 2021 年 6 月 2 日
正常啊,就算是 print 他都是有缓冲的啊
|
9
azev OP @nowheremanx 每句都要跟一个 flush 吗?
|
10
azev OP @myCupOfTea 貌似其他语言没有这个问题
|
14
myCupOfTea 2021 年 6 月 2 日
发现日志文件里记录的时间点都那么接近
你这个应该是自己的问题了 |
15
no1xsyzy 2021 年 6 月 2 日
可是 logging.StreamHandler.emit 在 19 年前刚引入 logging 包就有 flush
https://github.com/python/cpython/blame/bb3e0c240bc60fe08d332ff5955d54197f79751c/Lib/logging/__init__.py#L1102 不过 python>=3,<3.7 的话始终有单行 buffer 。 而且记录时间不是在打印后,而是在打印前,怎么可能因为有 buffer 导致记录的时间点改变? |
16
flyingghost 2021 年 6 月 2 日
啊不,有 buffer 正常,buffer 还会影响时间戳就不正常了。
你确定你的姿势没问题吗? |
17
luckyc 2021 年 6 月 3 日
loguru 解君愁
|
18
lusi1990 2021 年 6 月 8 日
pycharm 里面有个环境变量 PYTHONUNBUFFERED=1
不知道你有没有?  |