一、Format類 1.直接實例化 2.可以繼承Format添加特殊字元 3.三個參數 (1)fmt:指定消息格式化字元串,如果不指定該參數則預設使用message的原始值 (2)datemt:指定日期格式字元串,如果不指定該參數,則預設使用“%Y-%m-%d %H:%M:%S" (3)style: ...
一、Format類
1.直接實例化
2.可以繼承Format添加特殊字元
3.三個參數
(1)fmt:指定消息格式化字元串,如果不指定該參數則預設使用message的原始值
(2)datemt:指定日期格式字元串,如果不指定該參數,則預設使用“%Y-%m-%d %H:%M:%S"
(3)style:Python3.2新增的參數,可取值為”%“,“{”和“¥”,如果不指定預設使用“%”
二、Filter類
1.可以被Handler和Logger使用
2.控制傳遞過來的信息的具體內容。
三、例子
#現在有一下幾個日誌記錄的需求:
#(1)要求將所有級別的所有日誌寫入磁碟文件
#(2)all.log文件中記錄所有的日誌信息,日誌格式為:日期和時間-日誌級別-日誌信息
#(3)error.log文件中單獨記錄error及以上級別的日誌信息,日誌格式:日期和時間-日誌級別-文件名【:行號】- 日誌信息
#(4)要求all.log在每天凌晨進行日誌切割
#分析
#(1)要記錄所有級別的日誌,因此日誌器的有效level需要設置為最低級別 --DEBUG
#(2)日誌需要被髮送到兩個不同的目的地,因此需要為日誌設置兩個handler;另外。兩個目的地都是磁碟文件。因此這兩個handler都是與fileHander
#(3)all.log要求按照時間進行日誌切割,因此它需要logging.handler.TimeRotatingFileHandler;而error.log沒有要求日誌切割。因此
#(4)兩個日誌文件的格式不同,因此需要對兩個handler分別進行設置格式器
import logger import logging.handlers import datetime #定義Logger logger = logging.getLogger("mylogger") logging.setLevel(logging.DEBUG) rf_handler = logging.handlers.TimedRotatingFileHandler("all.log",when="midnight",interval=1,backupCount=7,atTime=None) rf_handler.setFormatter(logging.Formatter("%(asctime)s-%(levelname)s-%(message)s")) f_handler = logging.FileHandler("error.log") f_handler = setLevel(logging.ERROR) f_handler.setFormat(logging.Formatter("%(asctime)s-%(levelname)s-%(filename)s[:%(lineno)d-%(message)s)") #把相應的處理器組裝到logger上 logger.addHandler(rf_handler) logger.addHandler(f_handler) logger.debug("debug message") logger.info("info message") logger.warning("warning message") logger.error("error message") logger.critical("critical message")
四、源碼
d23_3_log_example.py
地址:https://github.com/ruigege66/Python_learning/blob/master/d23_3_log_example.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換