python log

python的日誌模塊爲logging,它能夠將咱們想要的信息輸出保存到一個日誌文件中。html

# cat log 
import logging

logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warring message')
# python log 
WARNING:root:This is warring message

默認狀況下,logging將日誌打印到屏幕,日誌級別爲WARRINGpython

日誌級別的關係爲:CRITICAL》ERROR》WARNING》INFO》DEBUG》NOTEST,可自定義日誌級別。web

2、經過logging.basicConfig函數對日誌的輸出格式及方式作相關配置socket

root@web01:/srv/stackinsider-org/stack/log/logtest# cat log 
import logging

logging.basicConfig(
                level=logging.DEBUG, #日誌級別,默認爲logging.WARNING
                format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
                datefmt='%a, %d %b %Y %H:%M:%S', #指定時間格式
                filename='lxy.log', #日誌文件名,沒有會自動生成
                filemode='w'  #覆蓋以前log
)

logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warring message')

日誌文件內容以下【若是沒有會自動生成】
# cat lxy.log Thu, 12 Mar 2015 10:13:43 log [line:11] DEBUG This is debug message Thu, 12 Mar 2015 10:13:43 log [line:12] INFO This is info message Thu, 12 Mar 2015 10:13:43 log [line:13] WARNING This is warring message

logging.basicConfig函數各參數:ide

filename:指定日誌文件名函數

filemode:和file函數意義相同,指定日誌文件的打開模式,'w'或者'a'。spa

level:設置日誌級別,默認爲logging.WARNING。線程

datafmt:指定日誌格式,同time.strftime()debug

stream:指定日誌的輸出流,能夠指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略。日誌

format:指定輸出的格式和內容,format能夠輸出不少有用信息:

%(levelno)s:打印日誌級別的數值

%(levelname)s:打印日誌級別名稱

%(pathname)s:打印當前知悉程序的路徑,其實就是sys.argv[0]

%(filename)s:打印當前執行程序名

%(funcName)s:打印日誌當前函數

%(lineno)d:打印日誌的當前行號

%(asctime)s:打印日誌的時間

%(thread)d:打印線程ID

%(threadName)s:打印線程名稱

%(process)d:打印進程ID

%(message)s:打印日誌信息

3、將日誌同時輸出到文件和屏幕

# cat log 
import logging

logging.basicConfig(
                level=logging.DEBUG,
                format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
                datefmt='%a, %d %b %Y %H:%M:%S',
                filename='lxy.log',
                filemode='w'
)
#定義一個StreamHandler,將INFO級別或更高級別的日誌信息打印到標準錯誤,並將其添加到當前的日誌處理對象
console=logging.StreamHandler()
console.setLevel(logging.INFO)
#控制檯輸出格式,8s表明8個空格 formatter
=logging.Formatter('%(name)-8s: %(levelname)-8s %(message)s') console.setFormatter(formatter) logging.getLogger('').addHandler(console) #log信息寫入日誌文件 logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warring message')

# python log
#控制檯輸出
root : INFO This is info message root : WARNING This is warring message # cat lxy.log
#log文件
Thu, 12 Mar 2015 10:52:29 log [line:20] DEBUG This is debug message Thu, 12 Mar 2015 10:52:29 log [line:21] INFO This is info message Thu, 12 Mar 2015 10:52:29 log [line:22] WARNING This is warring message

4、logging日誌回滾

Rotating英文意思是「旋轉」。

# cat log2
import logging
from logging.handler import RotatingFieHandler

#
定義一個RotatingFileHandle Rthandler
=RotatingFileHandler('lxy.log',maxBytes=10*1024*1024,backupCount=5) Rthandler.setLevel(logging.INFO) formatter=logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') Rthandler.setFormatter(formatter) logging.getLogger('').addHandler(Rthandler)

從三和四能夠看出:logging有一個日誌處理的主對象,其它處理方式都是經過addHandler添加進去的。

 

logging的幾種handler方式:

logging.StreamHandler:日誌輸出到流,能夠是sys.stderr,sys.stdout或者文件
logging.FileHandler:日誌輸出到文件
日誌回滾方式,實際使用時用RotatingFileHandler和TimedRotatingFileHandler
logging.handlers.BaseRotatingHandler
logging.handlers.RotatingFileHandler
logging.handlers.TimedRotatingFileHandler
logging.handlers.SocketHandler:遠程輸出日誌到TCP/IP sockets
logging.handlers.DatagramHandler:遠程輸出日誌到UDP sockets
logging.handlers.SMTPHandler:遠程輸出日誌到郵件系統
logging.handlers.SysLogHandler:日誌輸出到syslog
logging.handlers.NTEventLogHandler:遠程輸出日誌到Windows NT/2000/XP的事件日誌
logging.handlers.MemoryHandler:日誌輸出到內存中特定buffer
logging.handlers.HTTPHandler:經過"GET"或「POST」遠程輸出到HTTP服務

因爲StreamHandler和FileHandler是最經常使用的日誌處理方式,因此直接包含在logging模塊中,而其餘方式則包含在logging.handlrs模塊中。

 

Python 中文官方文檔 

http://python.usyiyi.cn/

Python官方教程中文版v2.7.8

http://python.usyiyi.cn/python_278/tutorial/index.html

相關文章
相關標籤/搜索