python脚本记录日志文件

 生成日志文件

from datetime import datetime
import os
import logging
import re
from logging.handlers import TimedRotatingFileHandler


def log(self, *args, sep=' ', end='\n', file=None):
    print(datetime.now().strftime('%m-%d %H:%M:%S'), self, *args, sep=sep, end=end, file=file)


def init_log(log_name):
    # 创建logger对象。传入logger名字
    logger = logging.getLogger(log_name)
    logger.handlers.clear()  # 每次生成日志对象时,清楚handler
    # 每次新建对象时候,判断系统是否存在handler,如果存在则pop
    while len(logging.root.handlers) > 0:
        logging.root.handlers.pop()
    root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  # 本地测试使用
    # "D:\cfm-check"     测试环境日志文件输出地址
    # D:\cfm\cfm-check生产环境日志文件输出地址
    log_path = os.path.join(".", log_name)
    # 设置日志记录等级
    logger.setLevel(logging.INFO)
    # interval 滚动周期,
    # when="MIDNIGHT", interval=1 表示每天0点为更新点,每天生成一个文件
    # backupCount  表示日志保存个数
    file_handler = TimedRotatingFileHandler(
        filename=log_path, when="MIDNIGHT", interval=1, backupCount=30
    )
    # filename="mylog" suffix设置,会生成文件名为mylog.2020-02-25.log
    file_handler.suffix = "%Y-%m-%d.log"
    # extMatch是编译好正则表达式,用于匹配日志文件名后缀
    # 需要注意的是suffix和extMatch一定要匹配的上,如果不匹配,过期日志不会被删除。
    file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
    # 定义日志输出格式
    format_str = logging.Formatter(
        "[%(asctime)s] [%(process)d] [%(levelname)s] - %(module)s.%(funcName)s (%(filename)s:%(lineno)d) - %(message)s"
    )
    file_handler.setFormatter(format_str)
    logger.addHandler(file_handler)
    sh = logging.StreamHandler()  # 往屏幕上输出
    sh.setFormatter(format_str)
    logger.addHandler(sh)  # 把对象加到里面去
    # 删除handler
    # logger.removeHandler(sh)
    return logger


if __name__ == "__main__":
    logger = init_log("mylog")
    logger.info("this is info message")
    logger.warning("this is a warning message")
    try:
        int("xjk")
    except ValueError as e:
        logger.error(e)
# 如果其他py文件想使用此配置日志,只需 logging.getLogger(日志的名字)  即可
这里代码文件写在自己创建的component包下,文件命名为log_op。

在其他文件脚本内使用时,只需要将日志脚本导入,写下全局变量 
log = component.log_op.init_log("execute_log"),就可以在打印日志的地方调用了。
log.info("hahaha")
就会生成当天的日志文件execute_log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值