代碼請見本人github:https://github.com/pengcao/medical_chatbot_kg/tree/master/util
import logging
import sys,os
from logging.handlers import TimedRotatingFileHandler
class Logger(object):
"""
日誌類,在這裏面默人了日誌輸出的文件
modules : sys.modules['__main__']
"""
def __init__(self,modules):
# self._logger = logging.getLogger(name)
# 通過反射獲取模塊名
file = getattr(modules, '__file__', None)
name = os.path.splitext(os.path.basename(file))[0]
#
self._logger = logging.getLogger(name)
self._logger.setLevel(logging.INFO)
# 日誌輸出文件(可以開放配置文件,在配置文件中讀取配置,將日誌輸出到相應的目錄下)
fullfilename = os.path.dirname(sys.path[0])+'/log/run.log'
print(' === fullfilename ', fullfilename)
# logging模塊自帶的三個handler之一。繼承自StreamHandler。將日誌信息輸出到磁盤文件上。
# 默認情況下,日誌文件可以無限增大。
# fileHandl = logging.FileHandler(fullfilename,'a',encoding='utf8')
# 每隔12小時創建一個新的日誌文件,且將日誌輸出到新的日誌文件中
fileHandl = TimedRotatingFileHandler(filename=fullfilename, when="H", interval=12)
# logging.H
# Logger的基礎配置
fileHandl.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fileHandl.setFormatter(formatter)
self._logger.addHandler(fileHandl)
def info(self,message):
"""
@summary:在該logger上以INFO級別記錄一條信息
"""
self._logger.info(message)
def debug(self,message):
"""
@summary:在該logger上以DEBUG級別記錄一條信息
"""
self._logger.debug(message)
def error(self,message):
"""
@summary:在該logger上以ERROR級別記錄一條信息
"""
self._logger.error(message)
def warring(self,message):
"""
@summary:在該logger上以WARRING級別記錄一條信息
"""
self._logger.warning(message)
def exception(self,message):
"""
@summary:在該logger上輸出異常信息
"""
self._logger.exception(message)