详解Python实现Logger打印功能
最近工作中遇到了打印的需求,通过查找相关的资料发现Python中Logger可以很好的实现打印,所以下面这篇文章主要给大家介绍了关于Python如何实现Logger打印功能的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
前言
众所周知在Python中有专门用于logger打印的套件叫logging,但是该套件logger仅接收一个字符串类型的logger打印信息。因此,我们在使用是需要先提前将要打印的信息拼接成一个字符串之后才行,这样对于代码的整洁性并不好。
我在logging的基础上实现了一个类似于Java的logback的logger打印工具,实现比较简单,能够应对一些简单的logger打印需求,希望对大家能有帮助。下面话不多说了,来一起看看详细的介绍:
LoggerFactory
该类用作生成其他调用类的logger实例,并保存这些实例。
''' 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
该类主要实现了对logging的一些方法的封装,比较简单。
''' 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))
测试
logger = LoggerFactory.getLogger("Test") logger.info("打印log1:{}, 打印log2:{}", 666, "我是log2")
测试结果:
[2017-07-20 16:43:00,821] [Test] [INFO]: 打印log1:666, 打印log2:我是log2
以上是详解Python实现Logger打印功能的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在LAMP架构下整合Node.js或Python服务许多网站开发者都面临这样的问题:已有的LAMP(Linux Apache MySQL PHP)架构网站需要...

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

使用Scapy爬虫时,管道持久化存储文件无法写入的原因探讨在学习使用Scapy爬虫进行数据抓取时,经常会遇到一�...

Python入门:沙漏图形绘制及输入校验本文将解决一个Python新手在沙漏图形绘制程序中遇到的变量定义问题。代码...

Python进程池处理并发TCP请求导致客户端卡死的解析在使用Python进行网络编程时,高效处理并发TCP请求至关重要。...

深入探讨Pythonfunctools.partial对象的查看方法在使用Python的functools.partial...

Python跨平台桌面应用开发库的选择许多Python开发者都希望开发出能够在Windows和Linux系统上都能运行的桌面应用程...

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...
