python自定義logger日誌輸出文件

爲什麼要寫日誌?
方便維護、方便調試代碼、項目上線後,發現錯誤能快速定位到錯誤代碼。

web_logging.py

# -*- coding:utf-8 -*-

# [logger]

# 默認日誌格式
DEFAULT_LOG_FMT = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s'
# 默認時間格式
DEFUALT_LOG_DATEFMT = '%Y-%m-%d %H:%M:%S'
# 輸出日誌路徑
import os
LOG_OUT_PATH = os.path.abspath('.') + '/logs/'

import sys
import logging
from time import strftime


class Logger(object):
    def __init__(self):
        self._logger = logging.getLogger()
        self.DEFAULT_LOG_FILENAME = '{0}{1}.log'.format(LOG_OUT_PATH, strftime("%Y-%m-%d"))
        self.formatter = logging.Formatter(fmt=DEFAULT_LOG_FMT, datefmt=DEFUALT_LOG_DATEFMT)
        self._logger.addHandler(self._get_file_handler(self.DEFAULT_LOG_FILENAME))
        self._logger.addHandler(self._get_console_handler())
        self._logger.setLevel(logging.INFO)  # 默認等級

    def _get_file_handler(self, filename):
        filehandler = logging.FileHandler(filename, encoding="utf-8")
        filehandler.setFormatter(self.formatter)
        return filehandler

    def _get_console_handler(self):
        console_handler = logging.StreamHandler(sys.stdout)
        console_handler.setFormatter(self.formatter)
        return console_handler

    @property
    def logger(self):
        return self._logger

test.py

from web_logging import Logger
logging = Logger().logger

 logging.info(u"{}:開始XXX操作".format(datetime.datetime.now()))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章