python,logging-日志记录

# -*- coding: utf-8 -*-
import os
import logging
from logging import handlers


def Logger(filename):
    fmt = '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
    format_str = logging.Formatter(fmt)  # 设置日志记录格式

    log_path = "log_path" # 日志文件记录路径
    log_file = os.path.join(log_path, filename) + ".log"

    logger = logging.getLogger()
    # 避免日志重复
    if logger.hasHandlers(): 
        logger.handlers = []
    logger.setLevel(logging.DEBUG)  # 设置日志记录级别

    # 按照时间自动分割日志文件
    # th = handlers.TimedRotatingFileHandler(filename=log_file, when="midnight", backupCount=5)
    # backupCount是备份文件的个数,如果超过这个个数,就会自动删除,
    # when是间隔的时间单位,单位有以下几种:
    # S 秒
    # M 分
    # H 小时、
    # D 天、
    # W 每星期(interval==0时代表星期一)
    # midnight 每天凌晨

    # 以日志文件的大小(maxBytes)进行划分,当日志文件达到记录的上限时新建一个日志文件,备份的日志数量(backupCount)如果超过这个个数,就会自动删除
    th = handlers.RotatingFileHandler(filename=log_file, maxBytes=50000000, backupCount=10)
    th.setFormatter(format_str)  # 设置文件里写入的格式

    sh = logging.StreamHandler()  # 往屏幕上输出
    sh.setFormatter(format_str)  # 设置屏幕上显示的格式

    logger.addHandler(sh)  # 把对象加到logger里
    logger.addHandler(th)
    return logger


if __name__ == '__main__':
    log = Logger('dd')
    log.debug('debug')
    log.info('info')
    log.warning('warning')
    log.error('错误')
    log.critical('critical')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中的logging模块可以记录行号,您可以通过在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级别输出一条带有行号信息的日志

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值