Python Logging模块的简单使用

记录日志作为做项目最基本的功能之一,在Python中是通过Logging模块实现的。简单记录一下Python Logging的模板,后续方便直接引用。

Logging的基本常识不在赘述,可以通过各种渠道学习。附上官网链接:https://docs.python.org/zh-cn/3.7/howto/logging.html#logging-basic-tutorial

整个模板的结构是:


1619230471573.jpg

一、核心是loggers.py

import logging
from logging.handlers import RotatingFileHandler


def init():
    global root
  
    # 定义类型为RotatingFileHandler的handlers,非必须
    filename = "log.txt"
    fh = RotatingFileHandler(filename, maxBytes=1024, backupCount=3)
    
    # logging配置信息
    logging.basicConfig(
        format="%(asctime)s %(name)s %(pathname)s[line:%(lineno)d] %(levelname)s: %(message)s",
        level=logging.DEBUG,
        handlers=[fh]
    )
    root = get()


def get(name=None):
    return logging.getLogger(name)

通过logging.basicConfig定义Logging的基本配置信息,其中format定义日志输出格式、level定义输出级别、handlers定义处理器(可以没有)。

Logger是有层级关系的,这里定义的root Logger是最顶层日志器,我们通过定义函数get()去创建子Logger日志。

二、core中存放业务代码

在core中可以写业务代码,写日志的方式都比较熟悉,会有debug、info、error等,根据需要来即可。

from app import loggers

logs = loggers.get(__name__) # 创建子Logger
def message():
    logs.debug("this is a debug message")
    logs.debug("this is a warning message")

三、程序入口与结果

main.py中初始化Logger,并调用业务代码

from app import loggers
from app.core import work1, work2

if __name__ == '__main__':
    loggers.init()
    work1.message()
    work2.message()

记录到的日志信息,符合预期。


1619231936500.jpg

四、总结

基本上Python类的项目都可以沿用这个日志模块的模板,具体项目中可以不通过Handler去真的“记录日志”,比如通过k8s、gunicorn等组件,去“重定向”日志信息也是可以的。

你可能感兴趣的:(Python Logging模块的简单使用)