1. import logging
  2. import os
  3. from logging.handlers import TimedRotatingFileHandler
  4. import coloredlogs

  5. # 设置颜色
  6. coloredlogs.DEFAULT_FIELD_STYLES = {'asctime': {'color': 'green'}, 'hostname': {'color': 'magenta'},
  7. 'levelname': {'color': 'green', 'bold': True}, 'request_id': {'color': 'yellow'},
  8. 'name': {'color': 'blue'}, 'programname': {'color': 'cyan'},
  9. 'threadName': {'color': 'yellow'}}
  10.  
  11. class Log:
  12. __instances = {}
  13.  
  14. @classmethod
  15. def getLogger(cls, name=os.path.abspath(__name__)):
  16. if name not in cls.__instances:
           # 日志文件夹路径
  17. BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  18. log_dir = 'logs'
  19. if not log_dir.startswith('/'):
             # 日志文件夹
  20. log_dir = os.path.join(BASE_DIR, log_dir)
  21.        # 递归生成
  22. if not os.path.isdir(log_dir):
  23. os.makedirs(log_dir, mode=0o755)
  24.  
  25. log_file = os.path.join(log_dir, "app.log")
  26. logger = logging.getLogger(name)
           # 设置日志格式
  27. fmt = '%(asctime)s [%(levelname)s] [%(name)s] %(filename)s[line:%(lineno)d] [%(threadName)s] %(message)s'
  28. formater = logging.Formatter(fmt)
  29.  
  30. ch = logging.StreamHandler()
  31. ch.setLevel(Log.__getLogLevel())
  32. ch.setFormatter(formater)
  33. logger.addHandler(ch)
  34.  
  35. coloredlogs.install(fmt=fmt, level=Log.__getLogLevel(), logger=logger)
  36.  
  37. fh = TimedRotatingFileHandler(log_file, when='M', interval=1, backupCount=7, encoding='utf-8')
  38. fh.setLevel(Log.__getLogLevel())
  39. fh.setFormatter(formater)
  40. logger.setLevel(Log.__getLogLevel())
  41. logger.addHandler(fh)
  42. cls.__instances[name] = logger
  43. return cls.__instances[name]
  44.  
  45. @staticmethod # 设置日志等级
  46. def __getLogLevel():
  47. return logging.INFO
  48.  
  49. if __name__ == '__main__':
  50. Log.getLogger().error('log测试数据')
  51. Log.getLogger().info('log测试数据')
  52. Log.getLogger().warning('log测试数据')
  53. Log.getLogger().debug('log测试数据')

  

Python通过logging记录日志并应用coloredlogs在控制台输出有色字体的更多相关文章

  1. Python logging记录日志

    Python logging记录日志 调试的几种方法: 使用print()在控制台上输出 使用assert断言 使用logging模块 logging提供了一组便利的函数,用来做简单的日志,(当然也能 ...

  2. python logging记录日志的方式

    python的logging模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志级别等级:critical > error > warning > info > deb ...

  3. Python之logging模块

    一.引言 之前在写一些小程序的时候想把日志内容打到文件中,所以就自己写了一个logger.py的程序,如下: #!/usr/bin/python # -*- coding=utf-8 -*- impo ...

  4. python的logging模块之读取yaml配置文件。

    python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...

  5. Python:logging 的巧妙设计

    引言 logging 的基本用法网上很多,这里就不介绍了.在引入正文之前,先来看一个需求: 假设需要将某功能封装成类库供他人使用,如何处理类库中的日志? 数年前在一个 C# 开发的项目中,我用了这样的 ...

  6. python中logging模块的用法

    很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...

  7. python中logging模块

    1. 日志的等级 DEBUG.INFO.NOTICE.WARNING.ERROR.CRITICAL.ALERT.EMERGENCY 级别 何时使用 DEBUG 详细信息,典型地调试问题时会感兴趣. 详 ...

  8. Python模块——logging模块

    logging模块简介 logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统.logging模块是Python的一个标准库模块, 由标准库模块提供日志记录API的关键好处是 ...

  9. python 运行日志logging代替方案

    以下是自己写的 记录日志的代码.(和logging不搭嘎,如果如要学loggging模块,本文末尾有他人的链接.) # prtlog.py ############################## ...

随机推荐

  1. [转帖]首颗国产DRAM芯片的技术与专利,合肥长鑫存储的全面深度剖析

    首颗国产DRAM芯片的技术与专利,合肥长鑫存储的全面深度剖析 https://mp.weixin.qq.com/s/g_gnr804q8ix4b9d81CZ1Q 2019.11 存储芯片已经成为全球珍 ...

  2. Linux学习-软件包管理安装

    rpm RPM是Red-Hat Package Manager(RPM软件包管理器)的缩写 软件包类型 二进制包:已经使用GCC编辑后的 tar源码包:需要编译 rpm包获取方式 1,系统镜像   需 ...

  3. poj 3744 题解

    题目 题意: $ yyf $ 一开始在 $ 1 $ 号节点他要通过一条有 $ n $ 个地雷的道路,每次前进他有 $ p $ 的概率前进一步,有 $ 1-p $ 的概率前进两步,问他不领盒饭的概率. ...

  4. Django框架深入了解_03(DRF之认证组件、权限组件、频率组件、token)

    一.认证组件 使用方法: ①写一个认证类,新建文件:my_examine.py # 导入需要继承的基类BaseAuthentication from rest_framework.authentica ...

  5. 使用ImagesPipeline时候报错为:ModuleNotFoundError: No module named 'scrapy.contrib'

    刚开始我是这样写的: 报错为: 哈哈,经过查阅资料,其实他是存在的,接下来修改如下: 经过运行结果如下: 问题解决,哈哈哈,搞定!!!!!!!!!!!!

  6. Go语言( 运算符)

    运算符用于在程序运行时执行数学或逻辑运算. 运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相 ...

  7. 【LEETCODE】52、数组分类,简单级别,题目:717,661,746,628,643,849

    package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...

  8. module 'pip._internal' has no attribute 'pep425tags'

    一.问题分析 这是python 3.x不能用2.x的版本问题 二.解决方案 import wheel.pep425tags as w print(w.get_supported()) 输出: [('c ...

  9. spring bean是什么

    Spring有跟多概念,其中最基本的一个就是bean,那到底spring bean是什么? Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP). 是否正确理解 Bean 对 ...

  10. openssl jia adress

    ???????????????????????????????????????????openssl证IP 首先创建openssl.cnf, 内容如下. 其中organizationalUnitNam ...