首页 > 编程语言 >python + logging 记录日志

python + logging 记录日志

时间:2024-08-27 17:49:20浏览次数:10  
标签:logging log python handler path 日志 logger name

日志生成的位置为当前文件目录下的tmp 文件夹,是以固定大小(10M)的方式去滚动日志,
如想设置为按时间滚动日志,需要设置为TimedRotatingFileHandler(filename=_create_log_path(), when="midnight", interval=1, backupCount=7)去替换RotatingFileHandler,每天晚上12点生成一个新的日志文件。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
from logging.handlers import RotatingFileHandler
import os
import re
import time


class Log(object):
    def __init__(self, cls_name):
        self._cls_name = cls_name

    def get_logger(self):
        _logger = logging.getLogger(self._cls_name)
        #  此处要整体设置 logger level = DEBUG,否则后面在不同的 handler 中设置 level 无效
        _logger.setLevel(logging.DEBUG)
        # 创建一个handler,用于写入日志文件
        file_handler = RotatingFileHandler(filename=_create_log_path(), mode='a', maxBytes=10 * 1024 * 1024,
                                           encoding='utf8', backupCount=100)

        # to avoid missing date for print daily log
        file_handler.suffix = "%Y-%m-%d"
        file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}$")
        # 设置日志输出格式
        logging_format = logging.Formatter('%(asctime)s - %(levelname)s - %(filename)s - [%(funcName)s] '
                                           '- %(lineno)s - %(message)s')
        file_handler.setFormatter(logging_format)
        _logger.addHandler(file_handler)

        # 设置控制台的日志输出
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.DEBUG)
        # 标准输出
        console_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(filename)s - [%(funcName)s] '
                                              '- %(lineno)s - %(message)s')
        console_handler.setFormatter(console_formatter)
        _logger.addHandler(console_handler)
        return _logger


def _get_current_dir():
    current_dir = os.path.dirname(os.path.abspath(__file__))
    # 创建一个新的文件夹
    return os.path.join(current_dir, 'tmp')


def _create_log_dir(log_path: str):
    """
    在此文件下生成日志文件夹
    :param log_path:
    :return:
    """
    if not os.path.exists(log_path):
        os.mkdir(log_path)


def _create_log_path():
    log_dir = _get_current_dir()
    _create_log_dir(log_dir)
    application_name = "parse_label"
    time_value = time.strftime('%Y%m%d', time.localtime(time.time()))
    # #create logger name
    log_file_name = application_name + "_" + time_value + '.log'
    log_file_str = log_dir+"/" + log_file_name
    print(log_file_str)
    return log_file_str


if __name__ == '__main__':
    logger = Log(__name__).get_logger()
    logger.info(time.strftime('%Y-%m-%d'))



标签:logging,log,python,handler,path,日志,logger,name
From: https://www.cnblogs.com/lyuSky/p/18383228

相关文章

  • python入门笔记 1.环境配置
    1.python编译器下载https://www.python.org/downloads/windows/下载3.10版本的python,因为3.13还在prerelease,3.12和3.11在bugfix,担心有稳定性问题。负责代码的执行,并且有python的一些基础包,比如os。可以进行一些基础功能,就好像游戏的本体。有游戏的基本玩法,后续可以通过买dlc......
  • python 多张图片合并
    有一堆雷达图,想放到一张图上展示#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Suyue@file:piccon.py@time:2024/08/27@desc:"""importosimportPIL.ImageasImageIMAGES_PATH=r'F:/picture//'#图片集地址IMAGES_FORM......
  • 基于python的保险业务数据可视化分析系统【python-爬虫-大数据定制】
    精彩专栏推荐订阅:在下方专栏......
  • Nginx 记录POST记录并设置日志只允许追加
    之前想融入到默认配置中。但是还是有一些会出现疑问。只能以文章的形式来配置之前想过异步的存储日志的方式。但是udp的方式也是挺消耗性能的无果一、Nginx的默认日志文件如下:#设定日志格式,main是默认的格式log_format  main  '$remote_addr-$remote_user[$time_l......
  • js 封装日志上传模块,实现异常日志的上报
    封装定义日志上传模块,实现异常日志的上报,包含触发方式:1、主动调取方法上报2、覆盖原生console.error实现,收集所有console.error打印的日志3、window注册绑定error事件,触发 window.addEventListener('error',/***客户端日志上传模块,实现异常日志的上报*使用时在HTML......
  • 用Python实现时间序列模型实战——Day1:时间序列的基本概念
    一、学习内容1.时间序列数据的定义与特点定义:时间序列数据是一组按时间顺序排列的观测值。时间序列的每个观测值都与特定时间点相关联。例如,气温每天的记录、股票每日的收盘价等。特点:时间依赖性:时间序列数据的一个基本特点是当前数据点可能依赖于之前的一个或多个数据点......
  • 将Python脚本打包为exe
    将Python脚本打包为exe一、背景想要在没有Python环境的PC上面跑Python脚本,想要在没有pycharm环境下将Python打包为exe文件。二、步骤1、安装pyinstallerpipinstallpyinstaller注:可能需要魔法。2、打包命令pyinstaller-F-wxxx.py注:参数定义-h该模块的help信......
  • [开题]flask框架信息安全知识学习微信小程序10fhc(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化时代,信息安全已成为社会经济发展的重要基石。随着移动互联网的普及,微信小程序作为一种轻量级的应用形态,迅速渗透到人们的日常生活......
  • [开题]flask框架医院挂号系统8n66p9(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗需求的日益增长,医院挂号系统作为患者就医的第一道门槛,其效率与便捷性直接影响到患者的就医体验和医院的运营效率。传统的人工挂号......
  • [开题]flask框架医院门诊预约挂号系统aj4p09(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗需求的持续增长和患者就医意识的提升,传统的医院门诊挂号方式已难以满足患者高效、便捷的就医需求。患者往往需要提前到医院排队等......