使用yml文件配置python日志

在这里插入图片描述

新建一个logging.yml文件,内容如下:

logging库提供了多个组件:Logger、Handler、Filter、Formatter:
Logger 对象提供应用程序可直接使用的接口,供应用代码使用;
Handler 发送日志到适当的目的地;
Filter 提供了过滤日志信息的方法,控制输出;
Formatter 指定日志输出和显示的具体格式。

version: 1
formatters:
  simple:
    format: '[%(asctime)s.%(msecs)03d] [%(levelname)s] [%(threadName)s] [%(module)s#%(lineno)d]: %(message)s'
handlers:
  console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout
  console_err:
    class: logging.StreamHandler
    level: ERROR
    formatter: simple
    stream: ext://sys.stderr
  file:
    class: logging.FileHandler
    level: DEBUG
    formatter: simple
    filename: "tmp/runtime.log"
loggers:
  simpleExample:
    level: DEBUG
    handlers: [console,file]
    propagate: yes
root:
  level: DEBUG
  handlers: [console_err]
format

%(name)s:Logger的名字
%(levelno)s:数字形式的日志级别
%(levelname)s:文本形式的日志级别
%(pathname)s:调用日志输出函数的模块的完整路径名,可能没有
%(filename)s:调用日志输出函数的模块的文件名
%(module)s:调用日志输出函数的模块名
%(funcName)s:调用日志输出函数的函数名
%(lineno)d:调用日志输出函数的语句所在的代码行
%(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d:线程ID。可能没有
%(threadName)s:线程名。可能没有
%(process)d:进程ID。可能没有
%(message)s:用户输出的消息

python中时间日期格式化符号:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

加载日志文件使用

def setup_logging(default_path='logging.yml', default_level=logging.INFO):
    path = default_path
    if os.path.exists(path):
        with open(path, 'r', encoding='utf-8') as f:
            config = yaml.load(f, Loader=yaml.FullLoader)
            logging.config.dictConfig(config)
    else:
        logging.basicConfig(level=default_level)

setup_logging()
logger = logging.getLogger('simpleExample')

if __name__ == '__main__':

    logger.debug("this is debug log")
    logger.info("this is info log")
    logger.error("this is error log")

输出的日志形式如下:

[2024-04-08 21:16:21,890.890] [DEBUG] [MainThread] [w_logging#32]: this is debug log
[2024-04-08 21:16:21,891.891] [INFO] [MainThread] [w_logging#33]: this is info log
[2024-04-08 21:16:21,891.891] [ERROR] [MainThread] [w_logging#34]: this is error log
[2024-04-08 21:16:21,891.891] [ERROR] [MainThread] [w_logging#34]: this is error log

参考文章:
https://zhuanlan.zhihu.com/p/476549020
https://pythonguidecn.readthedocs.io/zh/latest/writing/logging.html
Python日志模块logging的使用

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员王小黑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值