Day41 logging日誌模組

2021-09-13 09:00:44 字數 4392 閱讀 9375

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.日誌輸出處理 handler
import 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...