#!/usr/bin/env python
#-*- coding:utf-8 -*-
import
logging.handlers
class
logger(logging.logger):
def__init__(self, filename=none):
super(logger, self).
__init__
(self)
#日誌檔名
if filename is
none:
filename = '
cgss.log
'self.filename =filename
#建立乙個handler,用於寫入日誌檔案 (每天生成1個,保留30天的日誌)
fh = logging.handlers.timedrotatingfilehandler(self.filename, '
d', 1, 5)
fh.suffix = "
%y%m%d-%h%m.log
"fh.setlevel(logging.debug)
#再建立乙個handler,用於輸出到控制台
ch =logging.streamhandler()
ch.setlevel(logging.debug)
#定義handler的輸出格式
formatter = logging.formatter('
[%(asctime)s] - %(filename)s [line:%(lineno)d] - [%(levelname)s]-[thread:%(thread)s]-[process:%(process)s] - %(message)s')
fh.setformatter(formatter)
#ch.setformatter(formatter)
#給logger新增handler
self.addhandler(fh)
#self.addhandler(ch)
classtest(tornado.web.requesthandler):
defget(self):
log =logger()
#輸出日誌
log.info("
日誌模組訊息!")
log.debug(
"日誌模組除錯訊息!")
log.error(
"日誌模組錯誤訊息!")
self.write(
"hello world
")
timedrotatingfilehandler的建構函式定義如下(2.5版本api為例):timedrotatingfilehandler(filename [,when [,interval [,backupcount]]])
filename 是輸出日誌檔名的字首
when 是乙個字串的定義如下:
「s」: seconds
「m」: minutes
「h」: hours
「d」: days
「w」: week day (0=monday)
「midnight」: roll over at midnight
interval 是指等待多少個單位when的時間後,logger會自動重建檔案,當然,這個檔案的建立
取決於filename+suffix,若這個檔案跟之前的檔案有重名,則會自動覆蓋掉以前的檔案,所以
有些情況suffix要定義的不能因為when而重複。
backupcount 是保留日誌個數。預設的0是不會自動刪除掉日誌。若設10,則在檔案的建立過程中
庫會判斷是否有超過這個10,若超過,則會從最先建立的開始刪除。
python2.7 支援絕對路徑和相對路徑, 而3.5預設是相對路徑
如果3.5使用相對路徑的話
if filename isnone:
filepath = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "
cgss.log")
filename =filepath2
self.filename = filename
絕對路徑呢?
if filename isnone:
filepath2 = os.path.abspath("
/opt/code/my_code/readerwriter_file_mysql/cgss.log")
filename =filepath2
self.filename = filename
還需要注意個地方就是日誌模組不支援多程序
剛才去瞄了一下官網,有更詳細的解釋,可以去看看,推薦去官網
詳情:
#建立乙個handler,用於寫入日誌檔案 (每天生成1個,保留30天的日誌)
#fh = logging.handlers.timedrotatingfilehandler(self.filename, 'd', 1, 5)
fh = logging.handlers.watchedfilehandler(self.filename)
tornado的日誌檔案輸出
如何使用tornado的日誌檔案輸出 1.tornado logging使用的python內建的logging模組 2.在tornado options.py 中定義了對logging配置項的一些定義 如果需要新增啟動引數,需要在對應的 中匯入options模組 以下是一些在options.py中定...
Tornado模組分類和各模組之間的關係
1.core web framework tornado.httpserver 乙個無阻塞http伺服器的實現 tornado.template 模版系統 tornado.escape html,json,urls等的編碼解碼和一些字串操作 tornado.locale 國際化支援 2.asynch...
BASH增加日誌功能
bash增加日誌功能 如果工作中遇到了比較囧的情況,機器被人攻破了,黑客登入了你的系統 當然我們會盡全力防止這樣的事情發生 你一定會希望系統記錄下來哪個使用者做過哪些操作。history功能並不能滿足這個要求,因為黑客的智商應該會告訴他在離開的時候刪除history記錄 除非你遇到個菜鳥黑客 那麼我...