python自定義logger日志輸出文件


1.為什么要寫日志?

  方便維護、方便調試代碼、項目上線后,發現錯誤能快速定位到錯誤代碼。

1 # [logger]
2
3 # 默認日志格式
4 DEFAULT_LOG_FMT = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s'
5 # 默認時間格式
6 DEFUALT_LOG_DATEFMT = '%Y-%m-%d %H:%M:%S'
7 # 輸出日志路徑
8 LOG_OUT_PATH = r'H:/atlas_project/python_project/example/log/'
 1 # -*- coding:utf-8 -*-
 2 import sys
 3 import logging
 4 from time import strftime
 5 from log.setting import DEFAULT_LOG_FMT, DEFUALT_LOG_DATEFMT, LOG_OUT_PATH
 6 
 7 
 8 class Logger(object):
 9     def __init__(self):
10         self._logger = logging.getLogger()
11         self.DEFAULT_LOG_FILENAME = '{0}{1}.log'.format(LOG_OUT_PATH, strftime("%Y-%m-%d"))
12         self.formatter = logging.Formatter(fmt=DEFAULT_LOG_FMT, datefmt=DEFUALT_LOG_DATEFMT)
13         self._logger.addHandler(self._get_file_handler(self.DEFAULT_LOG_FILENAME))
14         self._logger.addHandler(self._get_console_handler())
15         self._logger.setLevel(logging.INFO)  # 默認等級
16 
17     def _get_file_handler(self, filename):
18         filehandler = logging.FileHandler(filename, encoding="utf-8")
19         filehandler.setFormatter(self.formatter)
20         return filehandler
21 
22     def _get_console_handler(self):
23         console_handler = logging.StreamHandler(sys.stdout)
24         console_handler.setFormatter(self.formatter)
25         return console_handler
26 
27     @property
28     def logger(self):
29         return self._logger

2.執行結果

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM