1. 单文件的logging配置

import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='znifeng.log',
filemode='w')

2. 项目的logger配置(一个logger配置多个handler以实现输出不同级别的日志到不同文件)

#!/usr/bin/python
# -*- coding: utf-8 -*
__author__ = 'zni.feng'
import os
# mac 上logging的源码路径 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging
import logging
import logging.handlers class Logger:
def __init__(self, name="root"):
self._logger = logging.getLogger(name)
#def __init__(self, fmt=None, datefmt=None)
formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] - %(filename)s(line:%(lineno)d) - %(message)s', '%Y-%m-%d %H:%M:%S') #class logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False)
handler_info = logging.handlers.TimedRotatingFileHandler('logs/info.log', when='D', interval=1)
handler_warn = logging.handlers.TimedRotatingFileHandler('logs/warn.log', when='D', interval=1) handler_info.setFormatter(formatter)
handler_warn.setFormatter(formatter) #当handler的log level高于logger本身的log level时,此设置才会生效
handler_info.setLevel(logging.INFO)
handler_warn.setLevel(logging.WARN) self._logger.addHandler(handler_info)
self._logger.addHandler(handler_warn) #默认情况下,logger本身的log level是warn,为了让info handler的level等级生效,所以调低logger本身的level
self._logger.setLevel(logging.INFO) def getLogger(self):
return self._logger

最新文章

  1. C#设置输入框只输入数字
  2. 禁用nested loop join里的spool
  3. imadjust从用法到原理—Matlab灰度变换函数之一
  4. 别再为了this发愁了------JS中的this机制
  5. c++ primer 5th 练习3.43
  6. JSON编码格式提交表单数据详解
  7. winform 调用http 通过代理出现的一系列问题
  8. JQuery拾遗
  9. C语言编程时常犯十八个错误
  10. 工具-maya2014软件操作细节(持续更新……)
  11. digitalocean优惠码30美元1G内存VPS免费使用两个月
  12. java常用数据类型使用Day008
  13. Java并发编程阅读笔记-同步容器、工具类整理
  14. IntelliJ IDEA 使用教程(2019图文版) -- 从入门到上瘾
  15. [转] 一文弄懂神经网络中的反向传播法——BackPropagation
  16. 本地文件上传GitHub
  17. Android 6.0动态申请权限时,权限框闪一下就消失的问题;
  18. vue项目中,localhost可以访问,IP无法访问的问题
  19. Delphi中如何实现模拟组合按键,如发送Ctrl+F的按键
  20. vue控制台报错

热门文章

  1. shoes的安装前后(一)
  2. 对Java平台的理解
  3. php-fpm开启报错-ERROR: An another FPM instance seems to already listen on /tmp/php-cgi.sock
  4. POI之Excel导出
  5. RocEDU.阅读.写作《苏菲的世界》书摘(六)
  6. ZOJ 3391 Haunted Graveyard(最短路负权回路)题解
  7. DataContract with Json.Net
  8. sqlite的时间筛选字段
  9. 如何用js创建表格?
  10. Redis之Python 使用 Redis