gue*_*tli 12 python django logging
我遵循了django文档的建议,并使用这样的日志记录:
import logging
logger = logging.getLogger(__name__)
def today(...):
logger.info('Sun is shining, the weather is sweet')
Run Code Online (Sandbox Code Playgroud)
使用我当前的配置,输出如下所示:
2016-08-11 14:54:06 mylib.foo.today: INFO Sun is shining, the weather is sweet
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法修改的一些库使用这样的日志记录:
import logging
def third_party(...):
logging.info('Make you want to move your dancing feet')
Run Code Online (Sandbox Code Playgroud)
不幸的是,输出看起来像这样:
2016-08-09 08:28:04 root.third_party: INFO Make you want to move your dancing feet
Run Code Online (Sandbox Code Playgroud)
我想看到这个:
2016-08-09 08:28:04 other_lib.some_file.third_party: INFO Make you want to move your dancing feet
Run Code Online (Sandbox Code Playgroud)
区别:
root.third_party ==> other_lib.some_file.third_party
root如果代码使用logging.info()而不是,我希望看到长版本(不是)logger.info()
更新
这不是Django中Python登录的优雅设置的重复,因为它的解决方案是:
开始报价
在每个模块中,我使用定义记录器
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
报价结束.
不,我不会修改使用的第三方代码而logging.info()不是logger.info().
跟进问题
小智 4
正如 Wayne Werner 所建议的,我将使用日志记录格式选项。这是一个例子。
文件一:external_module
import logging
def third_party():
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger()
logger.info("Hello from %s!"%__name__)
Run Code Online (Sandbox Code Playgroud)
文件2:main
import external_module
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(module)s.%(funcName)s: %(levelname)s %(message)s')
logger = logging.getLogger(__name__)
def cmd():
logger.info("Hello from %s!"%__name__)
external_module.third_party()
cmd()
Run Code Online (Sandbox Code Playgroud)
输出:
2016-08-11 09:18:17,993 main.cmd: INFO Hello from __main__!
2016-08-11 09:18:17,993 external_module.third_party(): INFO Hello from external_module!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |