Logger子类:

import logging

# create logger
module_logger = logging.getLogger('spam_application.auxiliary')

class Auxiliary:
def __init__(self):
self.logger = logging.getLogger('spam_application.auxiliary.Auxiliary')
self.logger.info('creating an instance of Auxiliary')
def do_something(self):
self.logger.info('doing something')
a = 1 + 1
self.logger.info('done doing something')

def some_function():
module_logger.info('received a call to "some_function"')

Main函数:

import logging
import auxiliary_module

# create logger with 'spam_application'
logger = logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)

logger.info('creating an instance of auxiliary_module.Auxiliary')
a = auxiliary_module.Auxiliary()
logger.info('created an instance of auxiliary_module.Auxiliary')
logger.info('calling auxiliary_module.Auxiliary.do_something')
a.do_something()
logger.info('finished auxiliary_module.Auxiliary.do_something')
logger.info('calling auxiliary_module.some_function()')
auxiliary_module.some_function()
logger.info('done with auxiliary_module.some_function()')

输出到文件spam.log

2015-06-30 20:08:37,335 - spam_application - INFO - creating an instance of auxiliary_module.Auxiliary
2015-06-30 20:08:37,335 - spam_application.auxiliary.Auxiliary - INFO - creating an instance of Auxiliary
2015-06-30 20:08:37,336 - spam_application - INFO - created an instance of auxiliary_module.Auxiliary
2015-06-30 20:08:37,336 - spam_application - INFO - calling auxiliary_module.Auxiliary.do_something
2015-06-30 20:08:37,336 - spam_application.auxiliary.Auxiliary - INFO - doing something
2015-06-30 20:08:37,337 - spam_application.auxiliary.Auxiliary - INFO - done doing something
2015-06-30 20:08:37,337 - spam_application - INFO - finished auxiliary_module.Auxiliary.do_something
2015-06-30 20:08:37,337 - spam_application - INFO - calling auxiliary_module.some_function()
2015-06-30 20:08:37,337 - spam_application.auxiliary - INFO - received a call to "some_function"
2015-06-30 20:08:37,338 - spam_application - INFO - done with auxiliary_module.some_function()

最新文章

  1. 一个简单的消息提示jquery插件
  2. windows 下 node.js 和 express 的安装
  3. C#——Marshal.StructureToPtr方法简介
  4. storyboard有多个Segue的传递
  5. EasyUI ComboGrid 分页
  6. 一个PHP邮件伪造脚本
  7. 处理MVC中默认的Json方法返回时间的问题
  8. Android Environment 判断sd卡是否挂载 获取sd卡目录
  9. struts2在web.xml中配置详情
  10. Java基础知识强化70:正则表达式之引入案例(QQ号码校验)
  11. 【42】android Context深度剖析
  12. 使用c++如何实现在gRPC中传输文件
  13. Myeclipse6.5每次打开properties中文注释都会变成乱码
  14. Maven项目pom.xml文件简单解析
  15. 网上找的Backbone.js
  16. passwd 修改密码
  17. 在matlab中实现线性回归和logistic回归
  18. CUDA开发 - CUDA 版本
  19. jQuery源码学习笔记二
  20. Django 模板中使用css, javascript

热门文章

  1. java Linkedhashmap源码分析
  2. Head First HTML与CSS(第2版) 中文pdf扫描版​
  3. 【2】循序渐进学 Zabbix:安装配置 Zabbix Server 服务端
  4. Django会话,用户和注册之用户认证
  5. [WIP]React 核心概念
  6. 基于vue实现上下滑动翻页效果
  7. 关于如何使用代码触发 UIButton的Unwind Segue
  8. thrift 通信的使用 /安装
  9. js 点击图片放大,再点击缩小还原
  10. Java 实现栈,队列