Python通过logging记录日志并应用coloredlogs在控制台输出有色字体
import logging
import os
from logging.handlers import TimedRotatingFileHandler
import coloredlogs
# 设置颜色
coloredlogs.DEFAULT_FIELD_STYLES = {'asctime': {'color': 'green'}, 'hostname': {'color': 'magenta'},
'levelname': {'color': 'green', 'bold': True}, 'request_id': {'color': 'yellow'},
'name': {'color': 'blue'}, 'programname': {'color': 'cyan'},
'threadName': {'color': 'yellow'}} class Log:
__instances = {} @classmethod
def getLogger(cls, name=os.path.abspath(__name__)):
if name not in cls.__instances:
# 日志文件夹路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
log_dir = 'logs'
if not log_dir.startswith('/'):
# 日志文件夹
log_dir = os.path.join(BASE_DIR, log_dir)
# 递归生成
if not os.path.isdir(log_dir):
os.makedirs(log_dir, mode=0o755) log_file = os.path.join(log_dir, "app.log")
logger = logging.getLogger(name)
# 设置日志格式
fmt = '%(asctime)s [%(levelname)s] [%(name)s] %(filename)s[line:%(lineno)d] [%(threadName)s] %(message)s'
formater = logging.Formatter(fmt) ch = logging.StreamHandler()
ch.setLevel(Log.__getLogLevel())
ch.setFormatter(formater)
logger.addHandler(ch) coloredlogs.install(fmt=fmt, level=Log.__getLogLevel(), logger=logger) fh = TimedRotatingFileHandler(log_file, when='M', interval=1, backupCount=7, encoding='utf-8')
fh.setLevel(Log.__getLogLevel())
fh.setFormatter(formater)
logger.setLevel(Log.__getLogLevel())
logger.addHandler(fh)
cls.__instances[name] = logger
return cls.__instances[name] @staticmethod # 设置日志等级
def __getLogLevel():
return logging.INFO if __name__ == '__main__':
Log.getLogger().error('log测试数据')
Log.getLogger().info('log测试数据')
Log.getLogger().warning('log测试数据')
Log.getLogger().debug('log测试数据')
Python通过logging记录日志并应用coloredlogs在控制台输出有色字体的更多相关文章
- Python logging记录日志
Python logging记录日志 调试的几种方法: 使用print()在控制台上输出 使用assert断言 使用logging模块 logging提供了一组便利的函数,用来做简单的日志,(当然也能 ...
- python logging记录日志的方式
python的logging模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志级别等级:critical > error > warning > info > deb ...
- Python之logging模块
一.引言 之前在写一些小程序的时候想把日志内容打到文件中,所以就自己写了一个logger.py的程序,如下: #!/usr/bin/python # -*- coding=utf-8 -*- impo ...
- python的logging模块之读取yaml配置文件。
python的logging模块是用来记录应用程序的日志的.关于logging模块的介绍,我这里不赘述,请参见其他资料.这里主要讲讲如何来读取yaml配置文件进行定制化的日志输出. python要读取 ...
- Python:logging 的巧妙设计
引言 logging 的基本用法网上很多,这里就不介绍了.在引入正文之前,先来看一个需求: 假设需要将某功能封装成类库供他人使用,如何处理类库中的日志? 数年前在一个 C# 开发的项目中,我用了这样的 ...
- python中logging模块的用法
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- python中logging模块
1. 日志的等级 DEBUG.INFO.NOTICE.WARNING.ERROR.CRITICAL.ALERT.EMERGENCY 级别 何时使用 DEBUG 详细信息,典型地调试问题时会感兴趣. 详 ...
- Python模块——logging模块
logging模块简介 logging模块定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统.logging模块是Python的一个标准库模块, 由标准库模块提供日志记录API的关键好处是 ...
- python 运行日志logging代替方案
以下是自己写的 记录日志的代码.(和logging不搭嘎,如果如要学loggging模块,本文末尾有他人的链接.) # prtlog.py ############################## ...
随机推荐
- python基础 — 局部变量/全局变量
变量作用区域 变量器作用的额代码范围称为变量的作用与,不同作用区域之间互不影响,函数每部定义的变量一般为局部变量,而不属于任何函数的变量一般为全局变量.所以我们在这里按变量的作用区域分为两类,全局变量 ...
- MediaPlayer的prepareAsync不回调onPrepared问题
一.问题排查 debug调试的framework日志信息: 根据日志,进入MediaPlayer的framework层看源码 STEP 1 先从 V/MediaPlayerNative: constr ...
- HuTool之判断上传文件的文件类型
文件类型判断-FileTypeUtil 由来 在文件上传时,有时候我们需要判断文件类型.但是又不能简单的通过扩展名来判断(防止恶意脚本等通过上传到服务器上),于是我们需要在服务端通过读取文件的首部几个 ...
- SpringBoot打成jar包后无法读取resources资源文件
在项目中做了一个支付功能, 需要引入第三方渠道的配置文件config.xml用来初始化文件证书, 将配置文件 config.xml 放到 resources 资源目录下. 本地开发环境下能正常读取该文 ...
- Java线程synchronized(一)
线程安全概念:当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的. synchronized:可以在任意对象及方法上加锁,而加锁的这段代码 ...
- Oracle scott解锁 以及连接数据库
最近公司需要使用oracle数据库,本地安装oracle进行测试,需要连接到数据库,但是发现scott账号 is locked; 原因:默认Oracle10g的scott不能登陆. 解决:(1)con ...
- echart 人头
<template> <div :class="className"> <div :id="id" class="spi ...
- php文件路径处理函数
basename -- 返回路径中的文件名部分 # 语法 string basename ( string $path [, string $suffix ] ) //> 手册例子 echo & ...
- CentOS - 查看操作系统版本
cat /etc/redhat-release 参考: https://www.cnblogs.com/baby123/p/6962398.html
- Kconfig和Makefile
内核源码树的目录下都有Kconfig和Makefile.在内核配置make menuconfig时,从Kconfig中读出菜单,用户勾选后保存到.config中.在内核编译时,Makefile调用这个 ...