首页 > 其他分享 >加日志的使用方法

加日志的使用方法

时间:2022-10-14 17:01:37浏览次数:47  
标签:__ log self time 使用 path 日志 方法 logger

# -*- coding: utf-8 -*-
# @Author  : 107
# @File    : logdriver.py
# @explain : 日志

import logging
import logging.config
import os
import time


class LogDriver:
    def __init__(self, log_path=None):
        """
        :param log_path: 日志存储路径
        """
        if log_path:
            self.log_path = log_path
        else:
            self.BASE_DIR = os.path.dirname(os.path.abspath(__file__))
            # self.today = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
            self.today = time.strftime("%Y-%m-%d", time.localtime(time.time()))
            self.log_path = os.path.join(self.BASE_DIR, "logs", self.today)

        if not os.path.exists(self.log_path):
            os.makedirs(self.log_path)

        self.logger = self.__config()

    def __config(self):
        _ = self
        """
        formatters:
            %(asctime)s -> 时间
            %(msecs)s -> 毫秒
            %(thread)s -> 进程号
            %(filename)s -> 文件名
            %(levelname)s -> 日志等级
            %(lineno)s -> 哪一行错了
            %(funcName)s -> 函数名
            %(message)s -> 报错信息
        """
        config = {
            'version': 1,
            'formatters': {
                'log_format': {
                    'format': '[%(asctime)s.%(msecs)d] [%(levelname)s] [ %(filename)s -> %(lineno)d] [%(message)s]',
                    'datefmt': '%Y-%m-%d %H:%M:%S'
                },
            },
            'filters': {
            },
            'handlers': {
                'console': {
                    'level': 'DEBUG',
                    'class': 'logging.StreamHandler',
                    'formatter': 'log_format'
                },
                'default': {
                    'level': 'INFO',
                    'class': 'logging.handlers.RotatingFileHandler',  # 将日志消息发送到磁盘文件,并支持日志文件按大小切割
                    'filename': os.path.join(self.log_path, "log.log"),  # 日志输出文件
                    'maxBytes': 1024 * 1024 * 5,  # 文件大小
                    'formatter': 'log_format',  # 使用哪种formatters日志格式
                    'backupCount': 1,
                    'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
                },
            },
            'loggers': {
                'zhang3': {
                    'handlers': ['default', 'console'],
                    'level': 'DEBUG',
                    'propagate': True
                }
            }
        }

        logging.config.dictConfig(config)
        logger = logging.getLogger('zhang3')
        return logger


if __name__ == "__main__":
    logger = LogDriver().logger
    # logger.info("info")
    # logger.error("error")
    # logger.debug("debug")
    # try:
    #     a = 0 / 0
    # except Exception as e:
    #     logger.exception(e)
    # logger.warning("warning")
    # logger.critical("critical")

 

标签:__,log,self,time,使用,path,日志,方法,logger
From: https://www.cnblogs.com/hudieren/p/16792174.html

相关文章

  • 阿里云事件生态再升级:使用 EventBridge 驱动全量云产品
    作者:昶风引言用户使用阿里云每天都会有大量的事件产生,例如云资源的增删改查、配置的变更、应用的水位报警等。这些事件部分是由用户业务操作触发产生,部分是由系统检测自......
  • 方法里面的可变参数
    publicstaticvoidmain(String[]args){userRegist("admin","1243","江西");}//可变参数,一个方法里面只有一个可变参数不能有其他参数,且......
  • Verilog中assign的使用
    assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。assign的功能......
  • 布隆过滤器简单使用
    参考:https://www.jb51.net/article/248125.htmhttps://blog.csdn.net/wang0112233/article/details/123665461https://blog.csdn.net/qq_40179653/article/details/1257......
  • Java基础(五)| 方法的定义、调用及重载
    ⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开......
  • 三种等待方法
    强制等待使用 time.sleep() 强制等待,设置固定的休眠时间,对于代码的运行效率会有影响。以上面的例子作为参照,将隐式等待改为强制等待。 隐式等待隐式等待也是指定......
  • grafana Variables 变量的使用
    概念澄清Avariableisaplaceholderforavalue.#变量是值的占位符。#参考文档:https://grafana.com/docs/grafana/latest/dashboards/variables/变量的valve,可......
  • logback整合mybatis plus限制日志打印
    场景:定时任务连接websocket实时推送大量数据,导致打印的sql日志太多,占满服务器磁盘内存,想要减少这些定时任务打印的sql日志又不影响别的服务sql日志打印经反复调试得知myba......
  • android:加载PDF几种方法汇总对比
    在安卓项目中,加载PDF文件,是一个比较常见的需求。又分为两大类,1.加载网络PDF2.加载一个本地静态PDF。查阅资料,纵观网上在安卓中打开PDF的各种方式,大致可以分为以下几类......
  • [2022.10.14]Java方法
    加上static变成类变量Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方......