logging模塊

功能完善的日誌模塊python

 

 

 

 

logging 模塊.py測試

import logging

# 1.日誌的級別
# logging.debug("這是一個調試信息") # 10
# logging.info("常規信息") # 20
# logging.warning("警告信息") # 30
# logging.error("錯誤信息") # 40
# logging.critical("嚴重錯誤") # 50
# 在logging模塊中有對應的常量用來標識級別
# 默認狀況下 默認的級別30 WARNING 日誌輸出位置是控制檯

# 2.自定定義日誌的配置
# logging.basicConfig(
# filename="a.log",
# filemode="at",
# level=10,
# format="%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
# datefmt="%Y-%m-%d %X %p"
# )
#
# logging.debug("這又是調試信息")


# 日誌模塊的四個核心角色
"""
1.logger 日誌生成器
2.filter 過濾器
3.handler 處理器
4.formatter 格式處理器
"""

# 1.建立一個日誌生成器
# mylog = logging.getLogger("mylog")
# # 設置生成器級別
# mylog.setLevel(logging.DEBUG)
#
# # 2.搞一個日誌處理器
# fh = logging.FileHandler("b.log",encoding="utf-8")
#
# # 3.搞一個格式處理器
# fm = logging.Formatter(
# "%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
# datefmt="%Y-%m-%d %X %p")
#
# # 4.將 三個對象進行關聯
# mylog.addHandler(fh)
# fh.setFormatter(fm)
# # 測試
# mylog.debug("mylog 的 測試!")



# # 日誌的繼承
# log1 = logging.getLogger("father")
# log2 = logging.getLogger("father.son")
# log3 = logging.getLogger("father.son.grandson")
#
# # 默認值True 標識 有繼承關係 當子的日誌產生日誌時 給他父級以及父級以上都發一份
# # 若是不須要就設置False
# # log3.propagate = False
#
# fh = logging.FileHandler("c.log",encoding="utf-8")
#
# fm = logging.Formatter(
# "%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
# datefmt="%Y-%m-%d %X %p")
#
#
# log1.addHandler(fh)
# log2.addHandler(fh)
# log3.addHandler(fh)
#
# fh.setFormatter(fm)
#
#
# # log1.warning("father log")
# # log2.warning("father.son log")
# log3.warning("father.son.grandson log")

import logging.config
# 以字典來配置日誌 傳入一個字典對象 就不須要在編寫上面那一堆代碼
# logging.config.dictConfig()




# 流處理器
log1 = logging.getLogger("a")
# 輸出到文件
fh = logging.FileHandler("c.log",encoding="utf-8")
# 輸出到控制檯
sh = logging.StreamHandler()

log1.addHandler(sh)
log1.addHandler(fh)
fm = logging.Formatter(
"%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
datefmt="%Y-%m-%d %X %p")
sh.setFormatter(fm)

log1.warning("測試2!")


import lib.common
logger = lib.common.get_logger()

def login():
logger.debug("測試 測試!")

login()
***********************************************************************

loggings.py
standard_format = "%(name)s %(asctime)s %(levelname)s %(module)s %(funcName)s %(lineno)s %(message)s"
simple_format = "%(name)s %(asctime)s %(module)s %(message)s"
complete_format = "%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(thread)s %(process)s %(message)s"
logfile_path = r"D:\上海python全棧4期\day22\代碼\log\d.log"

LOGGING_DIC = {
'version': 1,
'formatters': {
'standard': {
'format': standard_format
},
'simple': {
'format': simple_format
},
"complete":{
"format": complete_format
}
},
'filters': {},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'default': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'standard',
'filename': logfile_path, #
'maxBytes': 1024 * 1024 * 5, # 日誌文件的最大大小爲5M 超出後 換文件
'backupCount': 5, # 最多留五個日誌文件
'encoding': 'utf-8',
},
},
'loggers': {
# 在getLogger的時候 若是指定的名稱 不存在 或者不給名稱 用的就是默認的
# 在這裏若是key爲空 它就是默認的
# 你能夠本身定義生成器的名稱 而且他們還能使用相同的默認配置
'': {
'handlers': ['default', 'console'],
'level': 'DEBUG',
'propagate': False,
},
},
}


*****************************************************************************

common.py

import conf.settings
import logging.config

def get_logger():
logging.config.dictConfig(conf.settings.LOGGING_DIC)
return logging.getLogger("sasasasa")
*********************************************************************************
相關文章
相關標籤/搜索