標籤:功能 file arm handle set filename pychar author 輸出
python實現的logging寫入日誌的功能。logging模組還是挺好用的
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 # @Time : 2018/4/25 17:05 5 # @Author : zms 6 # @Site : 7 # @File : Log.py 8 # @Software: PyCharm Community Edition 9 10 import time11 import logging12 import os13 from logging.handlers import RotatingFileHandler14 15 project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))16 log_path = project_dir + r"\log\\"17 18 19 class Log(logging.Logger):20 def __init__(self, logname):21 # super(MyLogger, self).__init__(filename)22 filename = log_path + logname + ‘.log‘23 logging.Logger.__init__(self, filename)24 25 # 設定日誌格式26 fmtHandler = logging.Formatter(‘%(asctime)s [%(filename)s:%(lineno)s][%(levelname)s] %(message)s‘)27 28 # 終端log輸出資料流設定29 try:30 consoleHd = logging.StreamHandler()31 consoleHd.setLevel(logging.ERROR)32 consoleHd.setFormatter(fmtHandler)33 self.addHandler(consoleHd)34 except Exception as reason:35 self.error("%s" % reason)36 37 # 設定log檔案38 try:39 os.makedirs(os.path.dirname(filename))40 except Exception as reason:41 pass42 try:43 # 設定復原日誌,每個日誌最大10M,最多備份5個日誌44 fileHd = logging.handlers.RotatingFileHandler(45 filename, maxBytes=10 * 1024 * 1024, backupCount=5)46 # fileHd = logging.FileHandler(filename)47 fileHd.setLevel(logging.INFO)48 fileHd.setFormatter(fmtHandler)49 self.addHandler(fileHd)50 except Exception as reason:51 self.error("%s" % reason)52 53 return54 55 56 57 if __name__ == ‘__main__‘:58 test1 = Log(‘test1‘)59 test2 = Log(‘test2‘)60 while True:61 test1.error("test1")62 test2.error("test2")
python使用logging模組實現日誌寫入