Python logging 日誌模組總結

2021-08-16 12:39:13 字數 4704 閱讀 4538

三、 format 可選引數列表

四、根據檔案大小切分日誌

五、根據時間切分日誌

六、多程序寫日誌

logging模組包括logger,handler,filter,formatter這四個基本概念。

logger = logging.getlogger()

logger.setlevel(logging.debug)

logger1.setlevel(logging.info)

logger2.setlevel(logging.warning)

console_handler1 = logging.streamhandler()

console_handler2 = logging.streamhandler(sys.stderr)

console_handler3 = logging.streamhandler(sys.stdout)

fmt = logging.formatter(

'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s',

datefmt='%y-%m-%d %h:%m:%s')

file_handler.setformatter(fmt)

console_handler1.setformatter(fmt)

console_handler2.setformatter(fmt)

console_handler3.setformatter(fmt)

將 handler 加入logger例項後上面的操作才會有效,且這幾個handler是同時生效的。

logger.addhandler(file_handler)

logger.addhandler(console_handler1)

logger.addhandler(console_handler2)

logger.addhandler(console_handler3)

在需要的地方記錄日誌

logger.debug('this

is debug message')

logger.info('this

is info message')

logger.warn('this

is warning message')

logger.error('this

is warning error')

logger.critical('this

is critical error')

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

import logging

logger.setlevel(logging.info)

fmt = logging.formatter(

'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s',

datefmt='%y-%m-%d %h:%m:%s')

file_handler.setformatter(fmt)

logger.addhandler(file_handler)

logger.debug('this is debug message')

logger.info('this is info message')

logger.warn('this is warning message')

logger.error('this is warning error')

logger.critical('this is critical error')

%(name)s

logger的名字

%(levelno)s

數字形式的日誌級別

%(levelname)s

文字形式的日誌級別

%(pathname)s

呼叫日誌輸出函式的模組的完整路徑名,可能沒有

%(filename)s

呼叫日誌輸出函式的模組的檔名

%(module)s

呼叫日誌輸出函式的模組名

%(funcname)s

呼叫日誌輸出函式的函式名

%(lineno)d

呼叫日誌輸出函式的語句所在的**行

%(created)f

當前時間,用unix標準的表示時間的浮 點數表示

%(relativecreated)d

輸出日誌資訊時的,自logger建立以 來的毫秒數

%(asctime)s

字串形式的當前時間。預設格式是 「2003-07-08 16:49:45,896」。逗號後面的是毫秒

%(thread)d

執行緒id。可能沒有

%(threadname)s

執行緒名。可能沒有

%(process)d

程序id。可能沒有

%(message)s

使用者輸出的訊息

filename: 指定日誌檔名

filemode: 和file函式意義相同,指定日誌檔案的開啟模式,'w'或'a'

format: 指定輸出的格式和內容,format可以輸出很多有用資訊

datefmt: 指定時間格式,同time.strftime()

level: 設定日誌級別,預設為logging.warning

stream: 指定將日誌的輸出流,可以指定輸出到sys.stderr,sys.stdout或者檔案,預設輸出到sys.stderr,當stream和filename同時指定時,stream被忽略

rotatingfilehandler 的建構函式定義如下:

logging.handlers

.rotatingfilehandler(self, filename, mode='a', maxbytes=0, backupcount=0, encoding=none, delay=0)

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

import time

import logging

import logging.handlers

logger.setlevel(logging.info)

fmt = logging.formatter(

'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s',

datefmt='%y-%m-%d %h:%m:%s')

file_handler.setformatter(fmt)

logger.addhandler(file_handler)

while

true:

logger.info('this is info message!')

time.sleep(0.5)

如果需要對日誌檔案根據時間進行切分,使用 timedrotatingfilehandler, 它的建構函式定義如下:

logging.handlers.timedrotatingfilehandler(self, filename, when=

'h', interval=

1, backupcount=

0, encoding=

none, delay=

false, utc=

false)

when 是乙個字串的定義如下:

「m」: minutes

「h」: hours

「d」: days

「w」: week day (0=monday)

「midnight」: roll over

at midnight

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

import time

import logging

import logging.handlers

logger.setlevel(logging.info)

fmt = logging.formatter(

'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s',

datefmt='%y-%m-%d %h:%m:%s')

file_handler.suffix ="%y-%m-%d_

%h-%m"

file_handler.setformatter(fmt)

logger.addhandler(file_handler)

while true:

logger.info('this is info message!')

time.sleep(0.5)

多程序寫日誌、多程序寫日誌時的切分操作詳情閱讀 python 日誌模組應用

Python logging日誌模組

1.日誌的級別 日誌一共分成5個等級,從低到高分別是 1 debug 2.info 3.warning 4.error 5.critical說明 這5個等級,也分別對應5種打日誌的方法 debug info warning error critical。預設的是 warning,當在warning或...

python logging日誌模組

logging模組是python的乙個標準庫模組,由標準庫模組提供日誌記錄api的關鍵好處是所有python模組都可以使用這個日誌記錄功能。所以,你的應用日誌可以將你自己的日誌資訊與來自第三方模組的資訊整合起來。1.日誌級別 logging模組預設定義了以下幾個日誌等級,開發應用程式或部署開發環境時...

python logging日誌設定

log等級,輸出格式,輸出檔名,檔案讀寫模式 logging.basicconfig level logging.debug,format asctime s filename s line lineno d levelname s message s filename log.txt filemo...