import logging
from logging import handlers
# 全域性搜尋formatter
def basic_log():
"""使用預設日誌器 root"""
# 缺點,不能同時進行檔案輸出和控制台輸出
format = "%(name)s %(levelname)s %(pathname)s %(lineno)d %(message)s"
# 對預設日誌器進行配置
logging.basicconfig(level='debug', format=format, filename='test.log')
# 可以通過數字或字串取
# logging.basicconfig(level=logging.debug)
# 使用預設日誌器
logging.error("this is a error message")
logging.info("this is a info message")
logging.warning("this is a warning message")
logging.debug("this is a debug message")
def custum_log():
"""自定義日誌器"""
# 建立/獲取日誌器
mylogger = logging.getlogger('mytest')
mylogger.setlevel('debug')
# 建立輸出處理器(流處理器)
console_handler = logging.streamhandler()
# 給輸出處理器設定格式
console_formatter = logging.formatter("[%(asctime)s] %(name)s %(levelname)s %(pathname)s %(lineno)d %(message)s")
console_handler.setformatter(console_formatter)
# 建立檔案輸出處理器
# handlers.rotatingfilehandler轉存檔案處理器 當我們檔案達到指定大小時,會生成新的檔案繼續儲存日誌
# 當檔案寫到100m時會自動生成新日誌檔案,如果達到10個會複寫之前的
file_handler = handlers.rotatingfilehandler(filename='mylogger.log', maxbytes=100 * 1024 * 1024,backupcount=10 )
# 給輸出處理器設定格式
file_formatter = logging.formatter("[%(asctime)s] %(name)s %(levelname)s %(pathname)s %(lineno)d %(message)s")
file_handler.setformatter(file_formatter)
# 日誌器新增處理器
mylogger.addhandler(console_handler)
mylogger.addhandler(file_handler)
# 使用自定義日誌器
mylogger.error("this is a error message")
mylogger.info("this is a info message")
mylogger.warning("this is a warning message")
mylogger.debug("this is a debug message")
if __name__ == '__main__':
# basic_log()
custum_log()
ruby 迭代器使用方法
ruby 迭代器並不是ruby發明的.它廣泛地運用於各種物件導向語言.在lisp中也有,只是不這麼叫罷了.儘管如此,迭代器的概念並不為許多人熟悉,因此我們將在此做較為詳細的介紹.你知道,動詞 iterate 的意思是做同一件事許多遍,因此,iterator就是用來將同一件事做許多次的東西.當我們寫程...
編譯器使用方法
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
編輯器使用方法
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...