tornado 增加日誌模組

2021-09-07 08:36:02 字數 2673 閱讀 2878

#

!/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)

class

test(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 is

none:

filepath = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "

cgss.log")

filename =filepath2

self.filename = filename

絕對路徑呢?

if filename is

none:

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記錄 除非你遇到個菜鳥黑客 那麼我...