BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #22286同步于 2018/7/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

[已解决]快被一个日志的玄学问题搞疯了

mushroomboy
2018/7/8镜像同步29 回复
重审代码 + 翻手册后找到了原因: 代码一个子模块里加了以下语句: ```python logging.basicConfig(level=logging.DEBUG) ``` 而部署时候根据加载顺序,import 子模块的时候,在上面这个子模块里的 `basicConfig()` 先被加载,root logger 配置被设置为仅有 `level=logging.DEBUG` ,默认输出是 `stderr`。应用入口的 `basicConfig()` 在之后才被加载。 而[官方的文档(2.7)](https://docs.python.org/2/library/logging.html#logging.basicConfig)是这么写的: > Does basic configuration for the logging system by creating a StreamHandler with a default Formatter and adding it to the root logger. The functions debug(), info(), warning(), error() and critical() will call basicConfig() automatically if no handlers are defined for the root logger. > **This function does nothing if the root logger already has handlers configured for it.** 关键就在这最后一句,因为上面提到的加载顺序的原因,主应用的 `basicConfig()` 在执行时候检测到 root logger 已经被设置,于是: > Do nothing if the root logger already has handlers configured for it. 自己挖的坑。。。归根结底还是基础问题,还有就是手册!手册!手册!引一句经常提到的话吧: > Read the F**king Manual. #### 感谢提出建议和指引的各位! --------------------更新-------------- 是这样的,一个项目用的 flask + gunicorn ,flask 部分的代码如下: import logging from flask import Flask app = Flask(__name__) logging.basicConfig(filename='log.log') LOGGER = logging.getLogger(__name__) @app.route('/', methods=['GET']) def index(): LOGGER.info('hello world') return 'hello world!' def main(): app.run(host='localhost', port=5000) if __name__ == '__main__': main() 原来部署以后,日志正常出现,前几天某次重新部署后(仅修改部分业务代码),就没再产生过日志,Google 翻遍了都说的是 handler 的设置,但是和我的实现不是一样的。而且,我新开了一个简单的例子,日志逻辑如上,还是能产生日志信息。 现在已经不知道要怎么办了,连服务器都重启了,难道真的要烧柱高香??? 有老哥有啥建议么??
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
q397273499机器人#1 · 2018/7/8
有没有可能是log到其他地方了?拍脑袋想的,试试换个绝对路径。
mushroomboy机器人#2 · 2018/7/8
没有,很绝望。。。 【 在 q397273499 的大作中提到: 】 : 有没有可能是log到其他地方了?拍脑袋想的,试试换个绝对路径。
Seasidess机器人#3 · 2018/7/9
可能哪里log语句写错了?拍脑袋想的
GOON机器人#4 · 2018/7/9
写权限?
fuxuemingzhu机器人#5 · 2018/7/9
越是找不到错误,越要找最愚蠢的错误从头捋一捋
mushroomboy机器人#6 · 2018/7/9
权限都给到777了[ema1][ema1][ema1] 【 在 GOON 的大作中提到: 】 : 写权限?
mushroomboy机器人#7 · 2018/7/9
[ema1][ema1][ema1] 这几天做梦都在审代码 打算下午重来一遍 [ema8] 【 在 fuxuemingzhu 的大作中提到: 】 : 越是找不到错误,越要找最愚蠢的错误从头捋一捋
FromSixToTen机器人#8 · 2018/7/9
知道了。 【 在 fuxuemingzhu 的大作中提到: 】 : 越是找不到错误,越要找最愚蠢的错误从头捋一捋
nitroethane机器人#9 · 2018/7/9
默认的日志等级好像是 `warning`,所以以 `info` 等级输出的话是不会有任何内容的。不知道你遇到的问题是不是这个?举例如图: 【 在 mushroomboy 的大作中提到: 】 : 是这样的,一个项目用的 flask + gunicorn ,flask 部分的代码如下: : [code=py] : import logging : ...................