python中使用logging模組在控制台列印日誌的同時也

時間 2021-12-23 10:25:28

1樓:苟讀生活

loggin模組需要進行很多封裝才好用,你這種情況應該是初始化有問題,給你貼一段**你自己照抄下來用用試試。

# -*- coding:utf8 -*-

#import os

import logging

class logger(object):

'''@summary:日誌處理物件,對logging的封裝

'''def __init__(self,name = 'logger'):

self.logger = logging.getlogger( name )

self.init_logger()

def init_logger(self):

self.logger.setlevel(logging.debug)

# 螢幕輸出日誌

stream = logging.streamhandler()

stream.setlevel( logging.info )

# 日誌樣式

fm_stream = logging.formatter("[\033[1;%(colorcode)sm%(levelname)s\033[0m   %(asctime)s   %(myfn)s:%(mylno)d:

%(myfunc)s%(mymodule)s]   %(message)s", "%m-%d %h:%m:%s")

stream.setformatter( fm_stream )

self.logger.addhandler( stream )

def update_kwargs(self, kwargs, colorcode):

try:

fn, lno, func = self.logger.findcaller()

fn = os.path.basename(fn)

except exception as ddd:

fn, lno, func = "(unknown file)", 0, "(unknown function)"

if not "extra" in kwargs:

kwargs["extra"] = {}

kwargs["extra"]["myfn"] = fn

kwargs["extra"]["mylno"] = lno

kwargs["extra"]["myfunc"] = func

kwargs["extra"]["colorcode"] = colorcode

kwargs["extra"]["mymodule"] = ""

def debug(self, msg, *args, **kwargs):

self.update_kwargs(kwargs, "0")    # 原色

self.logger.debug(msg, *args, **kwargs)

def info(self, msg, *args, **kwargs):

self.update_kwargs(kwargs, "32")   # 綠色

self.logger.info(msg, *args, **kwargs)

def warning(self, msg, *args, **kwargs):

self.update_kwargs(kwargs, "33")   # 黃色

self.logger.warning(msg, *args, **kwargs)

def error(self, msg, *args, **kwargs):

self.update_kwargs(kwargs, "31")   # 紅色

self.logger.error(msg, *args, **kwargs)

def critical(self, msg, *args, **kwargs):

self.update_kwargs(kwargs, "31")   # 紅色

self.logger.critical(msg, *args, **kwargs)

使用方法:

from logger import logger

logger().info('***xx')

logger().warning('***xx')

logger().error('***xx')

2樓:糰子的柚子

# 判斷logger的控制代碼是否存在,存在則直接寫日誌,不存在則新建,如果不判斷會造成日誌重覆記錄問題

if not logger.handlers:

如何在Python中使用break跳出多層迴圈

神速小羊 盡然你知道break是跳出一個小的迴圈那你應該也知道continue是結束當前執行的最大的迴圈,所以你可以把你想跳出的一些小的迴圈放在一個大的迴圈中然後使用continue 或者你可以把這些小的迴圈放在一個大的while迴圈語句中,然後自己在設定一下while裡面的控制條件以及需要重新設定...

如何在Python中使用break跳出多層迴圈

黑馬程式設計師 python中的break語句用法,常用在滿足某個條件,需要立刻退出當前迴圈時 跳出迴圈 break語句可以用在for迴圈和while迴圈語句中。簡單的說,break語句是會立即退出迴圈,在其後邊的迴圈 不會被執行。break語句的用法 x 1 while true x 1 prin...

為什麼python指令碼中使用中文會報錯解決方法已知

專門花了一下午,總結了python 2.x中,常見的編碼解碼方面的錯誤。更主要的是,先給你解釋清楚了背後的邏輯 然後再給你解釋,錯誤的現象,現象背後的原因,以及如何解決,並且教你如何舉一反三等等。此處只把幾種最常見的問題的原因給你摘錄過來 python中,想要將某字串解碼為對應的unicode,但是...