第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

werkzeug:登錄到文件時(shí)禁用 bash 顏色

werkzeug:登錄到文件時(shí)禁用 bash 顏色

慕斯王 2023-10-11 22:51:46
在 Flask 應(yīng)用程序中,我使用 aRotatingFileLogger將 werkzeug 訪問日志記錄到文件中,如本問題所示:file_handler_access_log = RotatingFileHandler("access.log",                                              backupCount=5,                                              encoding='utf-8')formatter = logging.Formatter('%(asctime)s %(module)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')file_handler_access_log.setFormatter(formatter)werkzeug_logger.addHandler(file_handler_access_log)werkzeug_logger.setLevel(logging.DEBUG)在該access.log文件中,請求如下所示:2020-10-07 09:43:51 _internal INFO: 127.0.0.1 - - [07/Oct/2020 09:43:51] "[37mGET /api/foo HTTP/1.1[0m" 200 -我想擺脫[37m日志文件中的顏色代碼。該工具文檔指出:開發(fā)服務(wù)器可以根據(jù)狀態(tài)代碼選擇以不同顏色突出顯示請求日志。安裝 單擊以啟用此功能。Click 是 Flask 依賴項(xiàng),所以我無法卸載它。如何禁用彩色日志記錄?
查看完整描述

4 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

好的,所以你要打的是


if click:

? ? color = click.style


? ? if code[0] == "1":? # 1xx - Informational

? ? ? ? msg = color(msg, bold=True)

? ? ...

self.log("info", '"%s" %s %s', msg, code, size)


阻止這種行為并不容易。第二個(gè)選項(xiàng)是從消息中刪除顏色代碼。我會嘗試使用日志過濾器來更新消息,例如


import logging


import click

? ??


class RemoveColorFilter(logging.Filter):

? ? def filter(self, record):

? ? ? ? if record and record.msg and isinstance(record.msg, str):

? ? ? ? ? ? record.msg = click.unstyle(record.msg)?

? ? ? ? return True


remove_color_filter = RemoveColorFilter()

file_handler_access_log.addFilter(remove_color_filter)

查看完整回答
反對 回復(fù) 2023-10-11
?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

更簡單 - 它只是完全刪除所有“click”模塊的樣式。


import click

click.style = lambda text, *args, **kwargs: text

編輯:最后,我最終使用過濾器從發(fā)送到文件處理程序的日志消息中刪除轉(zhuǎn)義序列。由于 werkzeug 將轉(zhuǎn)義序列放入日志消息的 args 列表中,因此這些轉(zhuǎn)義序列也需要被刪除。這是基本輪廓:


class NoEscape(logging.Filter):

    def __init__(self):

        self.regex = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]')

    def strip_esc(self, s):

        try: # string-like 

            return self.regex.sub('',s)

        except: # non-string-like

            return s

    def filter(self, record: logging.LogRecord) -> int:

        record.msg = self.strip_esc(record.msg)

        if type(record.args) is tuple:

            record.args = tuple(map(self.strip_esc, record.args))

        return 1

希望這可以幫助!


查看完整回答
反對 回復(fù) 2023-10-11
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

我采用了我認(rèn)為更簡單的解決方案,即簡單地丟棄所有樣式參數(shù) - 在應(yīng)用程序啟動中類似這樣



    old_color = click.style


    def new_color(text, fg=None, bg=None, bold=None, dim=None, underline=None, blink=None, reverse=None, reset=True):

        return old_color(text)


    # replace flask styling with non-colorized styling

    click.style = new_color


查看完整回答
反對 回復(fù) 2023-10-11
?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

我自己遇到了這個(gè)問題,但是其他答案中提出的過濾器解決方案修改了發(fā)出的所有情況的記錄,而我只想刪除文件處理程序的樣式并將其留給控制臺處理程序。


我最終進(jìn)行了子類化Formatter而不是Filter:


import logging

import click


class AntiColorFormatter(logging.Formatter):

    def format(self, record: logging.LogRecord) -> str:

        return click.unstyle(super().format(record))

然后它適合類似的東西:


logger = logging.getLogger()

FMT = '{asctime} {levelname} {message}'


handler = logging.StreamHandler()

# regular console output gets normal styling

handler.setFormatter(logging.Formatter(FMT, style='{'))

logger.addHandler(handler)


handler = logging.FileHandler('log.log', encoding='utf8')

# file handler gets styling stripped

handler.setFormatter(AntiColorFormatter(FMT, style='{'))

logger.addHandler(handler)


查看完整回答
反對 回復(fù) 2023-10-11
  • 4 回答
  • 0 關(guān)注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號