logging模块利用配置加载logger

logging.config模块提供了从配置加载创建logger等相关对象,并放入manager对象中进行缓存待用。所以记录下一般几种方式配置的范本模式,方便项目中copy直接修改使用。

dict config references 官档关于logging配置字典说明

方式一模板:logging.config.dictConfig(config_dict)

config_dict 字典模板

    cfg = {
'version': 1,
'formatters': {
'detailed': {
'class': 'logging.Formatter',
'format': '%(asctime)s %(name)-15s %(levelname)-8s %(processName)-10s %(message)s'
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'INFO',
},
'file': {
'class': 'logging.FileHandler',
'filename': 'mplog.log',
'mode': 'w',
'formatter': 'detailed',
},
'foofile': {
'class': 'logging.FileHandler',
'filename': 'mplog-foo.log',
'mode': 'w',
'formatter': 'detailed',
},
'errors': {
'class': 'logging.FileHandler',
'filename': 'mplog-errors.log',
'mode': 'w',
'level': 'ERROR',
'formatter': 'detailed',
},
},
'loggers': {
'foo': {
'handlers': ['foofile']
}
},
'root': {
'level': 'DEBUG',
'handlers': ['console', 'file', 'errors']
},
}

模板二:

LOGGER_CONFIG_DICT = {
'version': 1,
'formatters': {
'detailed_fmt': {
'class': 'logging.Formatter',
'format': '%(asctime)s %(created)s %(levelname)-6s %(name)-15s %(processName)s:%(threadName)s %(message)s'
# human-readable timestamp levelname logger_name processname threadname message
},
'simple_fmt': {
'class': 'logging.Formatter',
'format': '%(asctime)s %(levelname)-8s %(name)-15s %(message)s'
# human-readable levelname logger_name message
},
'portal_fmt': {
'class': 'logging.Formatter',
# 'datefmt': '%Y-%m-%d %H:%M:%S,uuu', # 实际默认格式就是这个
'format': '%(asctime)s %(levelname)-8s %(name)-15s %(processName)-10s %(message)s'
},
'system_fmt': {
'class': 'logging.Formatter',
'format': '%(asctime)s %(name)-15s %(levelname)-8s %(processName)-10s %(message)s'
},
},
'handlers': {
# 'console_hd': {
# 'class': 'logging.StreamHandler',
# 'level': 'INFO'
# },
'time_rotate_file_hd': {
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': './logs/selfservices1.log',
'when': 'M',
'interval': 5,
'backupCount': 100,
'formatter': 'simple_fmt'
},
'file_size_rotate_hd': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': './logs/portal.log',
'mode': 'a',
'maxBytes': 1024 * 1024 * 5,
'backupCount': 50,
'formatter': 'portal_fmt'
},
'errors_hd': {
'class': 'logging.FileHandler',
'filename': './logs/errors.log',
'formatter': 'detailed_fmt',
'level': 'ERROR' # 只会错误40及以上的日志
},
'system_hd': {
'class': 'logging.FileHandler',
'filename': './logs/system.log',
'formatter': 'simple_fmt'
}
},
'loggers': {
'selfservices': {
'level': 'INFO',
'handlers': ['file_size_rotate_hd', 'errors_hd']
# 'handlers': ['time_rotate_file_hd', 'file_size_rotate_hd', 'errors_hd']
}
},
'root': {
'level': 'DEBUG',
'handlers': ['system_hd', 'errors_hd']
},
}

0x02 Python logging模块利用配置加载logger的更多相关文章

  1. 0x01 Python logging模块

    目录 Python logging 模块 前言 logging模块提供的特性 logging模块的设计过程 logger的继承 logger在逻辑上的继承结构 logging.basicConfig( ...

  2. 基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 个人技术博客:http://www.cnblogs.com/M ...

  3. 利用ChromeOptions()加载用户配置

    一. 如何绕过页面登录 我们在登录网站的时候,通常需要输入用户名.密码和验证码,那么有没有办法绕过登录环节呢? 有两种方法可以解决这个问题,一种是利用chrome浏览器的用户配置,一种是利用cooki ...

  4. Python logging模块无法正常输出日志

    废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name ...

  5. (转)python logging模块

    python logging模块 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python ...

  6. 读懂掌握 Python logging 模块源码 (附带一些 example)

    搜了一下自己的 Blog 一直缺乏一篇 Python logging 模块的深度使用的文章.其实这个模块非常常用,也有非常多的滥用.所以看看源码来详细记录一篇属于 logging 模块的文章. 整个 ...

  7. Python logging 模块学习

    logging example Level When it's used Numeric value DEBUG Detailed information, typically of interest ...

  8. Python logging 模块简介

    Table of Contents 1. Logging 模块 1.1. 简介 1.2. 简单输出日志 1.3. 输入日志到文件 1.4. 几个基本概念 1.4.1. loggers 1.4.2. h ...

  9. Log4j2源码分析系列:(一)配置加载

    前言 在实际开发项目中,日志永远是一个绕不开的话题.本系列文章试图以slf4j和log4j2日志体系为例,从源码角度分析日志工作原理. 学习日志框架,首先要熟悉各类日志框架,这里推荐两篇文章,就不再赘 ...

随机推荐

  1. 使用dva 的思考的一个问题,数组复制的必要

    *getTags({ payload }, { call, put }) { const response = yield call(getTags, payload); const arr = re ...

  2. Linux学习笔记-第2天- 新的开始

    迟到且稀疏的笔记,希望自己今年会有所突破.加油

  3. 微信小程序入门笔记

    目录的作用: 1. pages目录: 该目录下存放所有的定义页面 2. utils目录: 该目录下存放定义的一些小功能组件 3. 根目录下app.js文件: 定义小程序对象, 执行小程序生命周期内的各 ...

  4. [NOIP2015]运输计划 线段树or差分二分

    目录 [NOIP2015]运输计划 链接 思路1 暴力数据结构 思路2 二分树上差分 总的 代码1 代码2 [NOIP2015]运输计划 链接 luogu 好久没写博客了,水一篇波. 思路1 暴力数据 ...

  5. [LeetCode] 889. Construct Binary Tree from Preorder and Postorder Traversal 由先序和后序遍历建立二叉树

    Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...

  6. rIoTboard学习系列

    刚在咸鱼买了块开发板,比较老了14年的,SOC为imx6solo,内核3.10,uboot2009的,准备先移植一个较新的uboot 到nxp的git下获取他们维护的uboot,网址http://gi ...

  7. win10安装docker并结合Idea2018.1部署springboot项目

    一.准备工作 1..工具:win10,idea2018,maven3.5,jdk8 二.win10安装docker 1.win10安装docker:http://www.runoob.com/dock ...

  8. Oracle 的 连接

    select a.alert_id, b.alert_id from a inner join b on a.alert_id = b.alert_id ; 上面和下面是一样的,都是 内连接 sele ...

  9. [转帖]tcpdump详细教程

    tcpdump详细教程 https://www.jianshu.com/p/d9162722f189 tcpdump tcpdump - dump traffic on a network tcpdu ...

  10. 关于 AutoResetEvent 的介绍的简单示例

    关于 AutoResetEvent 的介绍的简单示例 直接贴代码了: class Program { static void Main(string[] args) { string result = ...