详解Python实现Logger打印功能


本文摘自php中文网,作者巴扎黑,侵删。

最近工作中遇到了打印的需求,通过查找相关的资料发现Python中Logger可以很好的实现打印,所以下面这篇文章主要给大家介绍了关于Python如何实现Logger打印功能的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。

前言

众所周知在Python中有专门用于logger打印的套件叫logging,但是该套件logger仅接收一个字符串类型的logger打印信息。因此,我们在使用是需要先提前将要打印的信息拼接成一个字符串之后才行,这样对于代码的整洁性并不好。

我在logging的基础上实现了一个类似于Java的logback的logger打印工具,实现比较简单,能够应对一些简单的logger打印需求,希望对大家能有帮助。下面话不多说了,来一起看看详细的介绍:

LoggerFactory

该类用作生成其他调用类的logger实例,并保存这些实例。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

'''

Created on 2017年7月20日

Logger工厂,保存每个类的Logger实例

'''

from slient.bigdata.common.logger import Logger

import logging

 

class LoggerFactory :

 LOG_FILENAME='bigdata_python.log' #logger保存文件

 TYPE = "CONSOLE"     #logger打印类型

 #TYPE = "FILE"

 

 LEVEL = logging.DEBUG    #logger级别

 #LEVEL = logging.INFO

 

 loggerDict = {}

 

 #对外部开放的Logger调用方法

 @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实例

 @staticmethod

 def __initLogger(className) -> Logger:

  logger = logging.getLogger(className)

  # 设置logger的level为DEBUG

  logger.setLevel(LoggerFactory.LEVEL)

  #设置Logger格式

  formatter = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s]: %(message)s')

 

  if LoggerFactory.TYPE == 'CONSOLE' :

   # 创建输出日志到控制台的StreamHandler

   handler = logging.StreamHandler()

  else :

   # 创建输出日志到文件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

阅读剩余部分

相关阅读 >>

Python中的猴子补丁是什么

Python实现给照片换底色(附代码)

用matplotlib如何绘制3d图形

Python tqmd模块实现进度条显示法

Python 实现一行输入多个值

Python sort函数怎么用

使用Python监控linux内存并将其写入mongodb

Python中整数的最大可能值是多少?(代码示例)

Python实现输出1到1000以内的素数

什么是Python number(数字)?Python数字类型有哪些?

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...