工作中需要及時解決線上的 bug,所以,及時獲取 log 中的 warning,error 是非常有必要的。
1 import logging
2 import logging.handlers
3 4 class encodingformatter(logging.formatter):
5 def __init__(self, fmt, datefmt=none, encoding=none):
6 logging.formatter.__init__(self, fmt, datefmt)
7 self.encoding = encoding
8
9
10 def get_logger(logger_name, logger_level, logger_location, days):
11 logger = logging.getlogger(logger_name)
12 logger.setlevel(logger_level)
13
14 log_format = "%(name)s\t%(asctime)s\t%(pathname)s\t[line:%(lineno)d]\t %(levelname)s\t %(message)s"
15 formater = logging.formatter(log_format)
16
17 # 存入檔案的日誌
18 handler = logging.handlers.timedrotatingfilehandler(logger_location, "midnight", 1, days, encoding="utf-8")
19 handler.suffix = "%y%m%d"
20 handler.setformatter(formater)
21 logger.addhandler(handler)
22
23 # 發郵件的日誌
24 sh = logging.handlers.smtphandler("smtp.163.com", send_email, [receive_email_1, receive_email_2],
25 "log error", credentials=(send_email, authority_password),secure=())
26 sh.setlevel(logging.error)
27 sh.setformatter(encodingformatter('%(name)s\t%(asctime)s\t%(pathname)s\t[line:%(lineno)d]\t %(levelname)s\t %(message)s', encoding='utf-8'))
28 logger.addhandler(sh)
29
30 return logger
~
這裡有兩個坑,但是**裡應該都已經解決了。
郵件傳送中文的坑,用 encodingformatter 解決;
郵箱的密碼不是登入密碼,而是授權碼。首先需要開啟郵箱的客戶端授權,然後設定授權碼。
Python logging模組學習
import logging 日誌級別列表,預設為logging.warning levels logging.notset,logging.debug,logging.info,logging.warning,logging.error,logging.critical log format as...
python logging模組簡介
logging模組是python內建的標準模組,主要用於輸出執行日誌,可以設定輸出日誌的等級 日誌儲存路徑 日誌檔案回滾等。相對於print,該模組具有可以決定在列印什麼級別的資訊和將資訊輸出放置在什麼地方的優點。配置logging的基本設定,並在控制台輸出 import logging loggi...
Python logging日誌模組
1.日誌的級別 日誌一共分成5個等級,從低到高分別是 1 debug 2.info 3.warning 4.error 5.critical說明 這5個等級,也分別對應5種打日誌的方法 debug info warning error critical。預設的是 warning,當在warning或...