Flask日誌資訊列印如何改變位置

2021-08-20 09:05:15 字數 1719 閱讀 1346

在flask框架中,每處理完一條請求,都會在終端列印出一條請求的日誌資訊:

127.0.0.1 - - [31/may/2018 04:40:35] "post /***/***/*** http/1.1" 200 -
之所以列印了這條日誌資訊,是因為flask框架在處理完請求後,呼叫了werkzeug庫的_log函式,函式如下。

def _log(type, message, *args, **kwargs):

"""log into the internal werkzeug logger."""

global _logger

if _logger is none:

import logging

_logger = logging.getlogger('werkzeug')

# only set up a default log handler if the

if not logging.root.handlers and _logger.level == logging.notset:

_logger.setlevel(logging.info)

handler = logging.streamhandler()

_logger.addhandler(handler)

getattr(_logger, type)(message.rstrip(), *args, **kwargs)

如果想要修改列印日誌,可以在啟動flask之前,定義乙個root logger

import logging

logger = logging.getlogger()

file_handler = logging.filehandler('/path/to/log/test.log')

logger.addhandler(file_handler)

logger.setlevel(logging.info)

這麼做之所以能改變flask列印資訊的地方,是因為在_log函式中有個一條判斷:

if not logging.root.handlers and _logger.level == logging.notset
當在**中定義了乙個root logger即呼叫logging.getlogger()不傳名字引數),該條件判斷便不成立,因此,werkzeug中的 _logger = logging.getlogger(『werkzeug』)便不會新增乙個streamhandler處理類。

另外,root logger例項的配置行為會影響帶名字logger例項的行為

logger1 = logging.getlogger()    # root logger

logger2 = logging.getlogger('hawk') # hawk logger

file_handler = logging.filehandler('/usr/local/usersystem/user.log')

logger1.addhandler(file_handler)

logger1.setlevel(logging.info)

# 此時,當呼叫logger2時,logger2也會向日誌檔案中寫入內容

基於這個機制,werkzeug中的_logger便會按照你定義的root logger的行為進行寫日誌動作!

flex程式列印log日誌,trace資訊

可以列印logger的內容,乙個例子 形成日誌內容 flash player是除錯版的,10.0的除錯不能夠形成flashlog.txt檔案 動態檢視日誌的檔案工具baretail baretail測試工具的優點 flex應用程式通過日誌資訊除錯 trace或者logger資訊 編輯mm.cfg的配...

js中除錯技巧 列印日誌資訊

平常除錯 的時候,大部分情況下我們會採用console.log的形式進行處理.但是這個是非常費事費力的一件事情.因為這個地方是要進行 的修改,然後經過 的 reload 之後,是一件非常低效的事情.而我們程式設計師是不會做低效的事情的 針對自己在工作中的場景,總結了一下幾種比較搞笑的方法進行列印 使...

將執行資訊列印日誌到檔案中

開發程式經常要從控制台當中獲取程式執行的情況,最近在開發在伺服器端,導師要求要記錄好執行資訊,包括異常資訊,客戶連線情況等資訊,但控制台 有種種限制,如視窗過小閱讀不方便,或者在伺服器上通過命令列執行jar包時的行數限制等等。於是就想到將執行資訊列印日誌到檔案中。接下來就分享一下這幾天研究出來的幾種...