python中 logging的使用与封装(含两种封装方式)

日志:日记 记录作用
日志作用:系统运行信息

学习日志:
几个组件:
loggers:日志器 程序的入口 别的文件想要调用就用日志器
handlers处理器:日志信息 输出到你想要的位置 控制台处理器 文本文件处理器
formatter格式器:处理日志格式 格式比较好看
filter过滤器

日志级别:
1.debug级别:调试级别
2.info级别:正常级别
3.warning警告:有问题但不影响程序运行
4.error级别:错误的
5.critical:严重的 程序崩溃

格式字符串 作用
%(name)s 日志记录器的名称(记录通道)
%(levelno)s 日志记录级别的数字
%(levelname)s 日志记录级别的文本
%(pathname)s 日志调用的源文件的完整路径名
%(filename)s 日志调用的源文件的文件名部分
%(module)s 日志调用的源文件的文件名的名称部分
%(lineno)d 日志调用的源行号
%(funcName)s 日志调用的函数名
%(created)f 打印日志的时间 time.time() 的返回值
%(asctime)s 打印日志的时间datetime.datetime.now()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的问题。你的意思是你在进行 logging 的二次封装时,发现在 Formatter 设置的 `filename` 参数输出的文件名不正确,对吗? 如果是这样,可能是因为在 Formatter 设置的 `filename` 参数也是默认使用 `__file__` 获得的当前模块的文件名,而不是你想要的被日志记录的文件名。 解决这个问题的方法是,你可以在自定义的 logging 函数,手动添加一个 `filename` 参数,并将其传递给 Formatter,而不是使用默认值。例如: ```python import logging def custom_logger(filename): logger = logging.getLogger(filename) logger.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s', '%Y-%m-%d %H:%M:%S') file_handler = logging.FileHandler(filename + '.log') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger logger = custom_logger('my_module') logger.debug('This is a debug message') ``` 在上面的代码,我们在自定义的 logging 函数添加了一个 `filename` 参数,并将其传递给 Formatter。Formatter 使用了 `% (asctime) s` 来添加记录时间,`%(name)s` 来添加 logger 名称,`%(levelname)s` 来添加日志级别,`%(message)s` 来添加日志消息。`%Y-%m-%d %H:%M:%S` 用于设置记录时间的格式。 这样,你就可以在调用 logging 函数时,指定要记录日志的文件名了。 希望这能帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值