三、 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...