# 時間 哪一個文件裏面的 第幾行代碼
import logging
from logging import handlers
# logging.debug('debug級別,最低級別,通常開發人員用來打印一些調試信息')
# logging.info('info級別,正常輸出信息,通常用來打印一些正常的操做')
# logging.warning('waring級別,通常用來打印警信息')
# logging.error('error級別,通常用來打印一些錯誤信息')
# logging.critical('critical級別,通常用來打印一些致命的錯誤信息')
# 日誌級別 debug < info < warning < error < critical
# logging.basicConfig(level=logging.ERROR,
# format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
# filename='a.log',
# filemode='a')
# logging.debug('我是debug')
# logging.info('我是info')
# logging.warning('我是warning')
# logging.error('我是error')
# logging.critical('我是critical')
logger = logging.getLogger() # 建立一個辦公室
logger.setLevel(logging.DEBUG) # 設置日誌級別
# 一個往屏幕上輸出 StreamHandler
# 一個往文件寫東西 TimedRotatingFileHandler
fmt = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
st = logging.StreamHandler() # 實例化StreamHandler,至關於找一我的給你幹活,往屏幕上輸出
# 第一個參數是文件名,第二個參數when是隔多久生成一個日誌,backupCount就是保存幾個日誌文件
th = handlers.TimedRotatingFileHandler(
'my.log', when='S', encoding='utf-8', backupCount=5
) # 實例化TimedRotatingFileHandler,至關於找一我的給你幹活,往文件裏面寫東西
st.setFormatter(fmt)
th.setFormatter(fmt)
logger.addHandler(st)
logger.addHandler(th)
logger.debug('my_log debug信息')
logger.info('my_log info信息')
logger.warning('my_log warning信息')
logger.error('my_log error信息')
logger.critical('my_log critical信息')
# param when: 分割日誌的單位 S 秒、M 分、 H 小時、 D 天、 W 每星期(interval==0時表明星期一)、midnight 天天凌晨
封裝日誌
import loggingfrom logging import handlersclass Logger(object): # 日誌級別關係映射 level_relations = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR, 'crit': logging.CRITICAL } def __init__(self, filename, level='info', when='D', back_count=3, fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'): self.logger = logging.getLogger(filename) self.logger.setLevel(self.level_relations.get(level)) # 設置日誌級別 format_str = logging.Formatter(fmt) sh = logging.StreamHandler() sh.setFormatter(format_str) th = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=back_count, encoding='utf-8') th.setFormatter(format_str) self.logger.addHandler(sh) self.logger.addHandler(th)if __name__ == '__main__': log = Logger('nhy.log') log.logger.debug('i的是100') log.logger.info('開機') log.logger.warning('警告 飛機沒油了') log.logger.error('錯誤 飛機要爆炸')