python logger如何获取行号_python中使用sys模板和logging模块获取行号和函数名的方法...

3a2c5c47719654b2eb3ed26ac95e70d8.png

对于python,这几天一直有两个问题在困扰我:

1.python中没办法直接取得当前的行号和函数名。这是有人在论坛里提出的问题,底下一群人只是在猜测python为什么不像__file__一样提供__line__和__func__,但是却最终也没有找到解决方案。

2.如果一个函数在不知道自己名字的情况下,怎么才能递归调用自己。这是我一个同事问我的,其实也是获取函数名,但是当时也是回答不出来。

但是今晚!所有的问题都有了答案。

一切还要从我用python的logging模块说起,logging中的format中是有如下选项的:

%(name)s Name of the logger (logging channel)

%(levelno)s Numeric logging level for the message (DEBUG, INFO,

WARNING, ERROR, CRITICAL)

%(levelname)s Text logging level for the message ("DEBUG", "INFO",

"WARNING", "ERROR", "CRITICAL")

%(pathname)s Full pathname of the source file where the logging

call was issued (if available)

%(filename)s Filename portion of pathname

%(module)s Module (name portion of filename)

%(lineno)d Source line number where the logging call was issued

(if available)

%(funcName)s Function name

%(created)f Time when the LogRecord was created (time.time()

return

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pythonlogging模块可以记录行号,您可以通过在loggers和handlers设置相应的参数来实现。 在logger,您可以使用`%(lineno)d`占位符来记录行号,示例代码如下: ``` import logging logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s - Line:%(lineno)d') console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) console_handler.setFormatter(formatter) logger.addHandler(console_handler) logger.debug('This is a debug message') ``` 在上述示例,`'%(asctime)s - %(name)s - %(levelname)s - %(message)s - Line:%(lineno)d'`是格式化字符串,其`'%(lineno)d'`即为行号占位符。我们通过StreamHandler将日志输出到控制台,然后使用debug级别输出一条带有行号信息的日志。 如果您想将日志输出到文件并记录行号,可以使用FileHandler,示例代码如下: ``` import logging logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s - Line:%(lineno)d') file_handler = logging.FileHandler('log_file.log') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.debug('This is a debug message') ``` 在上述示例,我们使用了FileHandler将日志输出到文件,并同样使用debug级别输出一条带有行号信息的日志。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值