文档章节

如何使用Python的logging模块

m
 millerblack
发布于 2015/06/16 22:36
字数 499
阅读 86
收藏 0

几个学习连接:

Python官方链接:

https://docs.python.org/3.4/library/logging.html?highlight=logging

翻译(不过是2.3版本的)

http://crazier9527.iteye.com/blog/290018

另外的一个人的总结:

http://blog.csdn.net/fxjtoday/article/details/6307285

最好理解,写的最好的:

http://bbs.chinaunix.net/thread-3590256-1-1.html

 

我的学习总结基于http://bbs.chinaunix.net/thread-3590256-1-1.html


 

以一个简单的日志系统为例子进行说明:

目标:创建一个日志系统,这个日志系统不仅能把信息输出到控制台,还可以输出到文件。

 

#import logging包
import logging
 
#创建一个logger,getLogger的参数是logger的名字
logger=logging.getLogger('lylogger')
#设置logger的等级,大于等于这个等级的信息会被输出,其他会被忽略
logger.setLevel(logging.DEBUG)
 
#Handler是英文翻译为处理者,用于输出到不同的地方:Stream为控制台,File为文件
#以下创建的是输出到文件的handler,并把等级设为DEBUG
fh=logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG)
 
#以下创建的是输出到控制台的handler,并把等级设为DEBUG
sh=logging.StreamHandler()
sh.setLevel(logging.DEBUG)
 
#下面指定了handler的信息输出格式,其中asctime,name,levelname,message都是logging的关键字
formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
sh.setFormatter(formatter)
 
#把Handler加入到logger中,可理解为给处理者在logger中安排了职位
logger.addHandler(fh)
logger.addHandler(sh)
 
#记录一条为”Hello,Arsenal!”的info日志信息
logger.info('Hello,Arsenal!')
print("process end!")

注意:

Logger.setLevel(lvl)
设置loggerlevel, level有以下几个级别:
NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
如果把looger的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出

 



思考题:

运行下面的日志系统,找出错误并改正。

 

import logging
 
logger=logging.getLogger('lylogger')
logger.setLevel(logging.DEBUG)
 
fh=logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG)
 
sh=logging.StreamHandler()
sh.setLevel(logging.DEBUG)
 
formatter=logging.Formatter('%(asctime)s - %(name)s - %(levlename)s - %(message)s')
fh.setFormatter(formatter)
sh.setFormatter(formatter)
 
logger.addHandler(fh)
logger.addHandler(sh)
 
logger.info('Hello,Arsenal!')
print("process end!")




答案:

通过查看错误信息,定位Key :levlename,得知关键字levelname写错了。


© 著作权归作者所有

共有 人打赏支持
m
粉丝 0
博文 4
码字总数 2800
作品 0
使用Logging Handler自动上传Python程序日志到日志服务

想要日志上云,又不想修改程序代码? 或者不希望进行相对复杂的客户端部署?那么您需要使用Logging Handler,现在Python程序也支持了! 概述 使用Python SDK提供的Log Handler可以实现每一条P...

成喆
04/13
0
0
python学习——基础(八)

python 内置了一套try...except...finally...的错误处理机制; try: except ZeroDivisionError, e: finally: 结果:tryexcept: integer division or modulo by zerofinally finally语句块是一......

随性_
2015/10/26
0
0
【资料整理】Python - 简单的epoll server代码解读

作为 Python 的初学者,学习别人的代码也是必要过程,本文主要是针对 《Python中使用epoll开发服务端程序》中的代码,进行源码注释说明。从代码中至少可以学习到如下三点: logging 模块的使...

摩云飞
2013/07/26
0
0
python 日志模块 logging 详解

Java 中最通用的日志模块莫过于 Log4j 了,在 python 中,也自带了 logging 模块,该模块的用法其实和 Log4j 类似。 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最...

大数据之路
2013/05/01
0
6
5分钟教你学会Django系统错误监控

一、监控所有的request请求 如何实现系统监控,自动发送错误日志的邮件呢? 只需配置配置settings文件即可。 1.设置发送邮件配置信息 邮件会发送到ADMINS设定的邮件列表中。 2.配置LOGGING 1...

p柯西
06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
15
4
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部