欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)Logger打印功能的方法詳解

 更新時(shí)間:2017年09月01日 11:57:22   作者:修凡先生  
最近工作中遇到了打印的需求,通過(guò)查找相關(guān)的資料發(fā)現(xiàn)Python中Logger可以很好的實(shí)現(xiàn)打印,所以下面這篇文章主要給大家介紹了關(guān)于Python如何實(shí)現(xiàn)Logger打印功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。

前言

眾所周知在Python中有專門(mén)用于logger打印的套件叫l(wèi)ogging,但是該套件logger僅接收一個(gè)字符串類(lèi)型的logger打印信息。因此,我們?cè)谑褂檬切枰忍崆皩⒁蛴〉男畔⑵唇映梢粋€(gè)字符串之后才行,這樣對(duì)于代碼的整潔性并不好。

我在logging的基礎(chǔ)上實(shí)現(xiàn)了一個(gè)類(lèi)似于Java的logback的logger打印工具,實(shí)現(xiàn)比較簡(jiǎn)單,能夠應(yīng)對(duì)一些簡(jiǎn)單的logger打印需求,希望對(duì)大家能有幫助。下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹:

LoggerFactory

該類(lèi)用作生成其他調(diào)用類(lèi)的logger實(shí)例,并保存這些實(shí)例。

'''
Created on 2017年7月20日
Logger工廠,保存每個(gè)類(lèi)的Logger實(shí)例
'''
from slient.bigdata.common.logger import Logger
import logging

class LoggerFactory :
 LOG_FILENAME='bigdata_python.log' #logger保存文件
 TYPE = "CONSOLE"     #logger打印類(lèi)型
 #TYPE = "FILE"

 LEVEL = logging.DEBUG    #logger級(jí)別
 #LEVEL = logging.INFO

 loggerDict = {}

 #對(duì)外部開(kāi)放的Logger調(diào)用方法
 @staticmethod
 def getLogger(className) -> Logger:
  if className in LoggerFactory.loggerDict.keys() : 
   logger = LoggerFactory.loggerDict[className]
   if not logger : 
    logger = LoggerFactory.__initLogger(className)
  else : 
   logger = LoggerFactory.__initLogger(className)
  return logger

 #生成Logger實(shí)例
 @staticmethod
 def __initLogger(className) -> Logger: 
  logger = logging.getLogger(className)
  # 設(shè)置logger的level為DEBUG
  logger.setLevel(LoggerFactory.LEVEL)
  #設(shè)置Logger格式
  formatter = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s]: %(message)s')

  if LoggerFactory.TYPE == 'CONSOLE' : 
   # 創(chuàng)建輸出日志到控制臺(tái)的StreamHandler
   handler = logging.StreamHandler()
  else : 
   # 創(chuàng)建輸出日志到文件Handler
   handler = logging.FileHandler(LoggerFactory.LOG_FILENAME)

  #添加格式 
  handler.setFormatter(formatter)
  # 給logger添加上handler
  logger.addHandler(handler)

  localLogger = Logger(logger)
  LoggerFactory.loggerDict[className] = localLogger
  return localLogger

Logger

該類(lèi)主要實(shí)現(xiàn)了對(duì)logging的一些方法的封裝,比較簡(jiǎn)單。

'''
Created on 2017年7月5日
日志處理
'''
import logging
import string

class Logger :

 def __init__(self, logger : logging):
  self.logger = logger

 def info(self, formatStr:string, *objs):
  self.logger.info(formatStr.format(*objs))

 def debug(self, formatStr:string, *objs):
  self.logger.debug(formatStr.format(*objs))

 def error(self, formatStr:string, *objs):
  self.logger.error(formatStr.format(*objs))

測(cè)試

logger = LoggerFactory.getLogger("Test")
logger.info("打印log1:{}, 打印log2:{}", 666, "我是log2")

測(cè)試結(jié)果:

[2017-07-20 16:43:00,821] [Test] [INFO]: 打印log1:666, 打印log2:我是log2

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Python報(bào)錯(cuò)ImportError:?IProgress?not?found.?Please?update?jupyter?and?ipywidgets解決

    Python報(bào)錯(cuò)ImportError:?IProgress?not?found.?Please?update

    在使用Jupyter Notebook或JupyterLab進(jìn)行交互式編程時(shí),我們可能會(huì)遇到各種導(dǎo)入錯(cuò)誤,本文就來(lái)介紹一下Python報(bào)錯(cuò)ImportError:?IProgress?not?found.?Please?update?jupyter?and?ipywidgets解決,感興趣的可以了解一下
    2024-06-06
  • python中format()函數(shù)的簡(jiǎn)單使用教程

    python中format()函數(shù)的簡(jiǎn)單使用教程

    python中format函數(shù)用于字符串的格式化,接下來(lái)通過(guò)本文給大家介紹python中format()函數(shù)的簡(jiǎn)單使用教程,一起看看吧
    2018-03-03
  • CNN的Pytorch實(shí)現(xiàn)(LeNet)

    CNN的Pytorch實(shí)現(xiàn)(LeNet)

    本文主要從CNN的Pytorch實(shí)現(xiàn)庫(kù)導(dǎo)入,模型定義,數(shù)據(jù)加載、處理,模型訓(xùn)練,代碼匯總等方面入手介紹,運(yùn)用代碼講解相關(guān)內(nèi)容非常的詳細(xì),大家如果有需要了解相關(guān)知識(shí)的可以參考這篇文章
    2021-09-09
  • Pycharm遠(yuǎn)程連接服務(wù)器并運(yùn)行與調(diào)試

    Pycharm遠(yuǎn)程連接服務(wù)器并運(yùn)行與調(diào)試

    本篇文章介紹一下 Pycharm 如何配置遠(yuǎn)程連接信息,使其能夠在本地使用服務(wù)器上的GPU等硬件資源,并在本地完成代碼的運(yùn)行與調(diào)試,感興趣的可以了解一下
    2021-08-08
  • python射線法判斷檢測(cè)點(diǎn)是否位于區(qū)域外接矩形內(nèi)

    python射線法判斷檢測(cè)點(diǎn)是否位于區(qū)域外接矩形內(nèi)

    這篇文章主要為大家詳細(xì)介紹了python射線法判斷檢測(cè)點(diǎn)是否位于區(qū)域外接矩形內(nèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python用requests-html爬取網(wǎng)頁(yè)的實(shí)現(xiàn)

    Python用requests-html爬取網(wǎng)頁(yè)的實(shí)現(xiàn)

    本文主要介紹了Python用requests-html爬取網(wǎng)頁(yè)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python 中面向接口編程詳情

    Python 中面向接口編程詳情

    這篇文章主要介紹了Python 中面向接口編程詳情,Python 中的接口與大多數(shù)其它語(yǔ)言的處理方式不同,它們的設(shè)計(jì)復(fù)雜性也不同,關(guān)于Python 接口編程的介紹,需要的小伙伴可以參考下面文章內(nèi)容
    2022-05-05
  • Python讀取xlsx數(shù)據(jù)生成圖標(biāo)代碼實(shí)例

    Python讀取xlsx數(shù)據(jù)生成圖標(biāo)代碼實(shí)例

    這篇文章主要介紹了Python讀取xlsx數(shù)據(jù)生成圖標(biāo)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python中ModuleNotFoundError錯(cuò)誤的問(wèn)題解決

    Python中ModuleNotFoundError錯(cuò)誤的問(wèn)題解決

    本文主要介紹了Python中ModuleNotFoundError錯(cuò)誤的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 詳細(xì)解讀Python中的json操作

    詳細(xì)解讀Python中的json操作

    json操作是最為基本的、最為常用的,Python自帶的json模塊就可以滿足大部分應(yīng)用場(chǎng)景,而且使用起來(lái)極為簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于Python中json操作的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評(píng)論