LOG
- http://www.cnblogs.com/yyds/p/6901864.html
- loogging模塊: 提供模塊級別的函數記錄日志
- 包括四大組件
1. 日志相關概念
- 日志
- 日志的級別
- 不同的用戶關注不同的程序信息
- DEBUG
- INFO
- NOTICE
- WARNING
- ERROR
- CRITICAL
- ALERT
- EMERGENCY
- IO操作-->不要頻繁操作
- LOG的作用
- 調試
- 了解軟件的運行情況
- 分析定位問題
- 日志信息
- time
- 地點
- level
- 內容
- 成熟的第三方日志
- log4j
- log4php
- logging
2. logging模塊
- 日志級別
- 級別可以自定義
- DEBUG
- INFO
- WARNING
- ERROR
- CRITICAL
- 初始化/寫日志實例需要指定級別, 只有當級別等于或者高于指定的級別才被記錄
- 使用方式
- 直接使用logging(封裝了其他組件)
2.1 logging模塊級別的日志
-
使用以下幾個函數:
- logging.debug(msg, *args, **kwargs) 創(chuàng)建一條級別為DEBUG的日志記錄
- logging.info(msg, *args, **kwargs) 創(chuàng)建一條級別為INFO的日志記錄
- logging.warning(msg, *args, **kwargs) 創(chuàng)建一條級別為WARNING的日志記錄
- logging.error(msg, *args, **kwargs) 創(chuàng)建一條級別為ERROR的日志記錄
- logging.critical(msg, *args, **kwargs) 創(chuàng)建一條級別為CRITICAL的日志記錄
- logging.log(level, *args, **kwargs) 自定義創(chuàng)建一條level級別的日志記錄
- logging.basicConfig(**kwargs) 對root logger進行一次性配置
-
logging.basicConfig(**kwargs) 對root logger進行一次性配置
- 只在第一次調用時起作用
- 不配置logger則使用默認值
- 輸出: sys.stderr
- 級別: WARNING
- 格式: level:log_name:content
案例01,,format的參數自行查詢
import logging LOG_FORMAT = "%(asctime)s=====%(levelname)s+++++%(message)s" logging.basicConfig(filename="test_log.log", level=logging.DEBUG, format=LOG_FORMAT) logging.debug("This is a debug log.") logging.info("This is a info log.") logging.warning("This is a warning log.") logging.error("This is a error log.") logging.critical("This is a critical log.") # 另一種寫法 logging.log(logging.DEBUG, "This is a debug log.") logging.log(logging.INFO, "This is a info log.") logging.log(logging.WARNING, "This is a warning log.") logging.log(logging.ERROR, "This is a error log.") logging.log(logging.CRITICAL, "This is a critical log.")
2.2 logging模塊的處理流程
- 四大組件
- 日志器(logger): 產生日志的一個接口
- 處理器(Handler): 把產生的日志發(fā)送到相應的目的地
- 過濾器(Filter): 更精細的控制那些日志輸出
- 格式器(Formatter): 對輸出信息進行格式化
- logger
- 產生一個日志
- 操作
Logger.setLevel() # 設置日志器將會處理的日志消息的最低級別 Logger.addHandel() 和 Logger.removeHandler() # 為該logger對象添加和移除一個Handler對象 Logger.addFilter() 和 logger.removeFilter() # 為該logger對象添加和移除一個Filter對象 Logger.debug: #產生一條debug級別的日志,同理info,error等 logger.exception(): # 創(chuàng)建蕾仕于Logger.error的日志消息 Logger.log(): # 或取一個明確的日志level參數類創(chuàng)建一個日志記錄
- 如何得到一個logger對象
- 實例化
- logger.getLogger()
- Handler
- 把log發(fā)送到指定位置
- 方法
- setLevel
- setFormat
- addFilter, removeFilter
- 不需要直接使用,Handler是基類
logging.StreamHandler # 將日志消息發(fā)送輸出到Stream,如std.out,std.err或任何file-like對象 logging.FileHandler # 將日志消息發(fā)送到磁盤文件,默認情況下文件大小會無限增長 logging.handlers.RotatingFileHandler # 將日志消息發(fā)送到磁盤文件,并支持按文件大小切割 logging.handlers.TimedRotatingFileHandler # 按文件時間切割 logging.handlers.HTTPHandler # 將日志消息以GET或POST的方式發(fā)送給一個HTTP服務器 logging.handlers.SMTPHandler # 將日志消息發(fā)送給一個指定的email地址 logging.NullHandler #該Handler實例會忽略error messages,通常被想使用logging的library
- Format類
- 直接實例化
- 可以繼承Format添加特殊內容
- 三個參數
- fmt:
- datefmt:
- style:
- Filter類
- 可以被Handler和Logger使用
- 控制傳遞過來的信息的具體內容
- 案例02