前言

众所周知在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_Python实现Logger打印功能的方法详解相关推荐

  1. python中backward_pytorch的梯度计算以及backward方法详解

    基础知识 tensors: tensor在pytorch里面是一个n维数组.我们可以通过指定参数reuqires_grad=True来建立一个反向传播图,从而能够计算梯度.在pytorch中一般叫做d ...

  2. Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...

  3. Python的Django框架中forms表单类的使用方法详解2

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  4. python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

  5. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

  6. php可以打印一个页面,利用html实现分页打印功能的实例详解

    本篇介绍利用html实现分页打印功能的实例详解,有些不想打印出来的分页打印的都可以应用这类样式进行控制 在非打印时是无效的. 页面打印 /* 应用这个样式的在打印时隐藏 */ .noPrint { d ...

  7. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  8. python url解码_对python中url参数编码与解码的实例详解

    一.简介 在python中url,对于中文等非ascii码字符,需要进行参数的编码与解码. 二.关键代码 1.url编码 对字符串编码用urllib.parse包下的quote(string, saf ...

  9. getpid php,对python中的os.getpid()和os.fork()函数详解

    如下所示: import os import sys import time processNmae = 'parent' print "Program executing ntpid:%d ...

最新文章

  1. Hide the common top menu in Ubuntu 12.04
  2. bBank Demo 演示(最后更:2010-4-16)
  3. 34. Leetcode 234. 回文链表 (链表-双指针)
  4. matlab 内存读取数据,matlab
  5. 2016-08-05
  6. 如何架设自己的 SAP UI5 资源服务器
  7. 客户端控件调用服务器的参数
  8. mt5 mysql数据库_Django -- 使用MySql数据库
  9. 常用命令集合_Windows
  10. 精通Android自定义View(十七)自定义圆形鸟巢加载转圈效果
  11. android百度地图根据点路线规划,Android 百度地图路径规划一直都是搜索不到结果...
  12. 【题解】(图论) —— POJ 0714:兔子与星空
  13. 游戏开发之友元类和友元函数(C++基础)
  14. Oracle 9i安全审计技术在电子政务中的应用
  15. 产生随机数(rand()函数和srand()函数)的含义
  16. python爬网易新闻_爬虫入门:如何用python爬取网易新闻?
  17. python判断字符串为空,Python判断字符串是否为空和null方法实例
  18. 深受企业青睐的华为云
  19. win7系统服务器停止,Windows7一个月后停止服务支持 Win7将于明年1月14日终止服务 停止服务后还能使用吗?...
  20. ac算法 java_Aho-Corasick算法的Java实现与分析

热门文章

  1. cura_build 开源库安装
  2. 安装多个Node的版本(实测有效)
  3. Node.js学习笔记 [黑马程序员]——day2
  4. 活动推荐 | 听说 PHP 是最好的语言 - 和 OneAPM 一起参与上海 PHPCon 技术盛宴吧
  5. 新书上架|管理者的新角色,首席情绪官
  6. Sqli_lib Less 5
  7. 自学Python的最佳选择《Python可以这样学》正式出版
  8. IView-UI组件篇之主题,语言,导航,路由
  9. 【联诚发】今日热搜,我的女人我宠着
  10. webpack配置与优化