zoukankan      html  css  js  c++  java
  • python log封装

     1 # _*_ coding:utf-8 _*_
     2 
     3 import logging
     4 import os
     5 import sys
     6 import time
     7 
     8 log_path = os.path.dirname(sys.path[0]) + '/log_path'
     9 
    10 class Log():
    11     def __init__(self):
    12         filename = 'test_' + time.strftime('%Y_%m_%d_%H%M%S') + '.log'   # 设置log名
    13         self.logname = os.path.join(log_path, filename)
    14         self.logger = logging.getLogger()
    15         self.logger.setLevel(logging.DEBUG)
    16         #设置日志输出格式
    17         self.formatter = logging.Formatter('%(asctime)s [%(levelname)s] [%(name)s:%(lineno)d] - %(message)s')
    18 
    19     def output(self, level, message):
    20         """
    21         :param level: 日志等级
    22         :param message: 日志需要打印的信息
    23         :return:
    24         """
    25         # send logging output to a disk file
    26         fh = logging.FileHandler(self.logname, 'a', encoding='utf-8')
    27         fh.setLevel(logging.DEBUG)
    28         fh.setFormatter(self.formatter)
    29         self.logger.addHandler(fh)
    30 
    31         # send logging output to streams
    32         ch = logging.StreamHandler()
    33         ch.setLevel(logging.DEBUG)
    34         ch.setFormatter(self.formatter)
    35         self.logger.addHandler(ch)
    36 
    37         if level == 'info':
    38             self.logger.info(message)
    39         elif level == 'debug':
    40             self.logger.debug(message)
    41         elif level == 'warn':
    42             self.logger.warn(message)
    43         elif level == 'error':
    44             self.logger.error(message)
    45 
    46         #防止重复打印
    47         self.logger.removeHandler(fh)
    48         self.logger.removeHandler(ch)
    49 
    50         fh.close()
    51 
    52     def info(self, message: object) -> object:
    53         self.output('info', message)
    54 
    55     def debug(self, message):
    56         self.output('debug', message)
    57 
    58     def warn(self, message):
    59         self.output('warn', message)
    60 
    61     def error(self, message):
    62         self.output('error', message)
  • 相关阅读:
    Python Generators vs Iterators
    python staticmethod classmethod
    静态类型、动态类型、强类型以及弱类型语言
    Python串行运算、并行运算、多线程、多进程对比实验
    python字典根据value排序
    解读Python内存管理机制
    两个list 求交集效率对比
    Python error: Unable to find vcvarsall.bat
    max-length兼容ie
    return false 与return true 困惑
  • 原文地址:https://www.cnblogs.com/mcboy/p/10774274.html
Copyright © 2011-2022 走看看