1.什麼是日誌級別
2.日誌級別例項
import logging
from datetime import datetime
logging.basicconfig(format='%(message)s {}'.format(datetime.now()),)
logging.debug('我是 debug 級別的日誌')
logging.info('我是 info 級別的日誌')
logging.warning('我是 warning 級別的日誌')
logging.error('我是 error 級別的日誌')
logging.critical('我是 critical 級別的日誌')
import logging
from datetime import datetime
logging.basicconfig(format='%(message)s {}'.format(datetime.now()), level=logging.debug)
logging.debug('我是 debug 級別的日誌')
logging.info('我是 info 級別的日誌')
logging.warning('我是 warning 級別的日誌')
logging.error('我是 error 級別的日誌')
logging.critical('我是 critical 級別的日誌')
3.日誌格式引數
4.日誌時間格式化
import logging
from datetime import datetime
logging.basicconfig(format='%(asctime)s %(message)s {}'.format(datetime.now()), level=logging.debug, datefmt='%y-%m-%d %h:%m:%s')
logging.debug('我是 debug 級別的日誌')
logging.info('我是 info 級別的日誌')
logging.warning('我是 warning 級別的日誌')
logging.error('我是 error 級別的日誌')
logging.critical('我是 critical 級別的日誌')
5.日誌輸出處理 handlerimport logging
from pprint import pprint
logging.basicconfig(format='%(asctime)s %(message)s ', level=logging.debug, datefmt='%y-%m-%d %h:%m:%s')
# 通過logging的工廠方法,返回logger例項
root_logger = logging.getlogger()
xkd_logger = logging.getlogger('xkd')
root_logger.setlevel(40)
# handler的level級別必須大於等於 logger例項的level級別才有意義
# 如果日誌的級別低於logger的級別是無法進入到logger的
error_handler = logging.streamhandler()
error_handler.setlevel(level=logging.error)
error_handler.setformatter(fmt=logging.formatter('%(asctime)s %(message)s', datefmt='%y-%m-%d %h:%m:%s'))
critical_handler.setlevel(level=logging.critical)
critical_handler.setformatter(fmt=logging.formatter('%(asctime)s %(message)s', datefmt='%y-%m-%d %h:%m:%s'))
root_logger.addhandler(error_handler)
root_logger.addhandler(critical_handler)
root_logger.info('我是 root 的 info 級別的日誌')
root_logger.error('我是 root 的 error 級別的日誌')
root_logger.critical('我是 root 的 critical 級別的日誌')
pprint(root_logger.handlers)
# 子logger
xkd_level = xkd_logger.geteffectivelevel()
print(xkd_level)
xkd_logger.info('我是 info 級別') # 不會列印
xkd_logger.error('我是 error 級別') # 會列印
6.如何安裝第三方日誌模組structlog
7.第三方日誌模組structlog的使用
from structlog import get_logger
log = get_logger()
# 可以直接傳遞key/value
log.info("需要列印的資訊", out_of_the_box=true, effort=0)
8.自定義全域性日誌模組import logging
import getpass
import sys
import os
from cfg.const_file import log_dir
#定義mylog類,管理log資訊
class mylog(object):
def __init__(self):
self.user = getpass.getuser()
self.logger = logging.getlogger(self.user)
self.logger.setlevel(logging.debug)
#日誌檔名
self.logfile = os.path.join(log_dir, 'debug.log')
self.formatter = logging.formatter('%(asctime)-12s %(levelname)- 8s %(name)-10s %(message)-12s\r\n')
#日誌顯示到螢幕並輸出到文件
self.loghand = logging.filehandler(self.logfile, encoding='utf-8')
self.loghand.setformatter(self.formatter)
self.loghand.setlevel(logging.debug)
self.loghandst = logging.streamhandler()
self.loghandst.setformatter(self.formatter)
self.loghandst.setlevel(logging.debug)
self.logger.addhandler(self.loghand)
self.logger.addhandler(self.loghandst)
#日誌的5個級別對應5個函式
def debug(self, msg):
self.logger.debug(msg)
def info(self, msg):
self.logger.info(msg)
def warn(self, msg):
self.logger.warn(msg)
def error(self, msg):
self.logger.error(msg)
def critical(self, msg):
self.logger.critical(msg)
#測試** __name__是訪問當前函式名的方法,如果作為模組就不是main函式 下面的方法不會執行
if __name__ == '__main__':
mylog = mylog()
mylog.debug(u"i'm 測試中文")
mylog.info("i;m info")
mylog.warn("warning")
mylog.error("error")
mylog.critical("this is a critical")
Python模組 logging模組列印日誌
python模組 logging 一 簡單日誌列印 直接使用logging模組,列印日誌到螢幕 預設輸出日誌的格式 日誌級別 logger名稱 使用者輸出訊息 預設的日誌級別設定為warning,logging模組將日誌列印到標準輸出中,且只顯示大於等於warning級別的日誌 日誌級別等級crit...
使用python內建模組logging日誌處理
import logging from logging import handlers ch logging.filehandler 自定義日誌檔案路徑名 encoding utf 8 utf 8是為了解決日誌檔案中的亂碼.常用於自己練習,正式開發用下面的方式。sh logging.streamha...
坦克大戰 day 41
建立敵人的坦克 public static tank createenemy else if x 1 else int y gameframe.titlebarh radius int dir dir down enemytank enemy tankpool.get enemy.setx x en...