首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
宝塔
V2EX  ›  Python

Python 如何进行全局的请求日志记录?

  •  
  •   superbai · 162 天前 · 1252 次点击
    这是一个创建于 162 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有多个接口,怎么能够给这些接口添加统一的请求日志记录功能,并且自动在有新增的接口时,也无感增加日志记录?

    在网上搜索到的方法都是写一个装饰器,然后在接口函数上使用这个装饰器。这种方法没有满足无感的需求,如果写代码的时候忘记加装饰器的话,就没有日志记录了

    第 1 条附言  ·  162 天前
    补充下,基于框架或者继承的实现我都清楚,不过这两种方法都和特定的代码 /框架紧耦合在一起了,除了这些还有其它方法么?
    15 回复  |  直到 2019-06-09 22:26:04 +08:00
        1
    so1n   162 天前
    中间件
        2
    ifoolish   162 天前
    全部接口继承一个基类
        3
    lauix   162 天前
    什么框架,flask 可以设置生命周期。其他框架也有的,自己查查文档。也可以自己写个 装饰器。
        4
    superbai   162 天前
    @ifoolish 嗯嗯,除了这种方式,还有其它的方法么?
    @lauix 不用框架有什么方法么?
    @so1n 是指 django 的中间件么?不用框架有什么方法么?
        5
    binux   162 天前
    不用框架就只能 monkey patch 了
        6
    ipwx   162 天前
    @superbai 做一个 metaclass,然后你就可以自动给所有成员函数自动加装饰器了。
        7
    polebug   162 天前
    赞同楼上 写一个 metaclass 给所有成员函数加上这个装饰器
    不过我不觉得直接给接口函数加装饰器有什么问题
        8
    lihongjie0209   162 天前
    没有拦截器?
        9
    flyingghost   162 天前
    实在想无感,直接在 nginx 反代层做好了。
    思维不要限制在 flask 之内嘛。
        10
    superbai   162 天前
    @binux
    @ipwx
    @polebug
    感谢,我瞅瞅;接口加装饰器当然没问题,不过我觉得有点烦...

    @lihongjie0209 Java 的那个拦截器么?我也想问哈哈哈,看起来是没有的

    @flyingghost 感谢,虽然一般没有这么做的,但也是个思路~
        11
    xchange   162 天前
    所有 logger 都输出到 stderr,然后用 supervisor 把输出重定向到一个文件里
        12
    troywinter   162 天前
    如果是接口的请求最好直接在网关层做,微服务里应该很好做,我不喜欢在服务自己的框架里做很多事情,keep it simple
        13
    chengxiao   162 天前 via iPhone
    uwsgi 的日志不是记录的都有么?直接日子分析下不就好了?
        14
    sazima   162 天前
    @app.before_request
        15
    linvaux   159 天前
    emm.....我之前就是写了个装饰器,没想到什么好办法
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   897 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 19:56 · PVG 03:56 · LAX 11:56 · JFK 14:56
    ♥ Do have faith in what you're doing.