##
importlogging

logging.debug('debug  message')
logging.info('info  message')
logging.warning('warning  message')    #  WARNING:root:warning  message
logging.error('error  message')        #  ERROR:root:error  message
logging.critical('critical  message')     #  CRITICAL:root:critical  message
这里是在控制台显示

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='myapp.log',
    filemode='w')
加了这个过后,是写到文件里面,写到myapp.log里面
asctime是时间,datefmt就是设置这个的,filename是文件名字,lineno是代码中的行号,levelname表示上面级别的名字message就是显示的信息,filemode模式是控制写到文件还是其他地方。
##文件内容
Sat,  30  Dec  2017  01:27:05  logging_module.py  [line:12] DEBUG  debug  message
Sat,  30  Dec  2017  01:27:05  logging_module.py  [line:13]  INFO  info  message
Sat,  30  Dec  2017  01:27:05  logging_module.py  [line:14]  WARNING  warning message
Sat,  30  Dec  2017  01:27:05  logging_module.py  [line:15]  ERROR  error  message
Sat,  30  Dec  2017  01:27:05  logging_module.py  [line:16]  CRITICAL  critical  message
这个是文件显示

logging.basicConfig函数各参数:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
 %(levelno)s: 打印日志级别的数值
 %(levelname)s: 打印日志级别名称
 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
 %(filename)s: 打印当前执行程序名
 %(funcName)s: 打印日志的当前函数
 %(lineno)d: 打印日志的当前行号
 %(asctime)s: 打印日志的时间
 %(thread)d: 打印线程ID
 %(threadName)s: 打印线程名称
 %(process)d: 打印进程ID
 %(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
源文档 <http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html>

#下面这里设置记录到文件和屏幕显示
logger = logging.getLogger()          #  获取一个logger对象
fh = logging.FileHandler('test.log')           #  创建一个handler,用于写入日志文件,文件输出对象
ch = logging.StreamHandler()               #  创建一个handler,用于输出到控制台,屏幕输出对象
formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')             # 格式对象

fh.setFormatter(formatter)      # 给两个输出对象设置格式
ch.setFormatter(formatter)

logger.addHandler(fh)      # 日志添加输出对象
logger.addHandler(ch)

logger.setLevel(logging.DEBUG)            #  设置等级

logger.debug('loggerdebugmessage')
logger.info('loggerinfomessage')
logger.warning('loggerwarningmessage')
logger.error('loggererrormessage')
logger.critical('loggercriticalmessage')
#使用步骤:获取logger对象,建立handler对象,handler对象设置格式,logger对象添加handler对象,使用

##深入一点的应该要到使用的时候

021logging模块的更多相关文章

  1. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  4. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  5. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  6. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  7. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  8. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  9. nodejs模块发布及命令行程序开发

    前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...

随机推荐

  1. 获取两个数之间的随机数-java

    start=25 end=30 (int)(Math.random()*(end-start)+start)

  2. 快速掌握用python写并行程序

    目录 一.大数据时代的现状 二.面对挑战的方法 2.1 并行计算 2.2 改用GPU处理计算密集型程序 3.3 分布式计算 三.用python写并行程序 3.1 进程与线程 3.2 全局解释器锁GIL ...

  3. 安装并开启ssh服务

    sudo yum install openssh*    安装 2. 设置 sudo vi /etc/ssh/sshd_config 首先先把port改掉port 52222 限制用户AllowUse ...

  4. 第三章 使用java实现面向对象 多态

    第三章 多态 一.编写父子类 1.多态是具有表现多种型生态的能力的特征,同一个实现接口,使用不同的实例而执行不同的操作 2.一个引用类型,使用不同的实例而执行不同操作.(父类引用子类对象) 使用多态的 ...

  5. Windows Server 2008 R2 搭建网站详细教程

    转自:http://jingyan.baidu.com/album/642c9d34098bf5644a46f71f.html?picindex=4 网上都有一些Windows Server 2008 ...

  6. java 输出菱形

    package com.demo01; public class Triangle { /** * @param args */ /* * 第一步:规定输出的行数 * 第二步:输出空格 再输出一个星, ...

  7. 谈谈HTML5中的history.pushSate方法,弥补ajax导致浏览器前进后退无效的问题

    移动端为了减少页面请求,有时候需要通过单页面做成多页面的效果,最近有这么个需求,表单填完后执行第一步,然后执行第二步,第二步执行完后再执行第三步,每一步都要保留之前的数据.这种情况用单页面实现再合适不 ...

  8. Sql-exec

    --显示sql server现有的所有数据库 exec sp_helpdb --查看数据表设置的约束 exec sp_helpconstraint SubjectType --update selec ...

  9. C#虚基类继承与接口的区别

    类:定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { } class Cat:object { } C#中所有的类都是默认由object类派生来的,显示指定或 ...

  10. VC6.0开发OCX按钮控件

    原文:http://www.cnblogs.com/joinclear/archive/2013/05/21/3091934.html 0前言 1.OCX是典型的ActiveX控件,常见的OCX控件有 ...