- 浏览: 378460 次
- 性别:
- 来自: 长春
文章分类
- 全部博客 (319)
- java socket (1)
- java ,IT , (14)
- php Cannot send session cache limiter - headers already sent (1)
- java ,IT ,淘宝 (1)
- mysql java (1)
- wml wap (1)
- jsp (1)
- python (27)
- 第一种方法满足要求 (1)
- java android (2)
- 娱乐,经验 (0)
- java (1)
- 经验 (1)
- linux (4)
- mongodb (1)
- php (2)
- hadoop (1)
- 转载,分享 (1)
- django (1)
- mongo (1)
- java web project (1)
- python3 (1)
- go (1)
最新评论
-
lu56898:
ubuntu中 加了没效果唉
python解决 'ascii' codec can't encode characters -
cooler1217:
DiaoCow 写道不知道LZ想取什么? 但看了下LZ的gre ...
grep awk 应用 -
DiaoCow:
不知道LZ想取什么? 但看了下LZ的grep使用,想了下其实可 ...
grep awk 应用 -
cooler1217:
外国人叫:条条大路通罗马,中国人叫:小鸡不撒尿,各有各的道。完 ...
linux 更改yum地址 -
libla:
个人更喜欢debian极度鄙视yum这种依赖于第三方语言(py ...
linux 更改yum地址
转载:http://blog.csdn.net/yatere/article/details/6655445
1.简单的将日志打印到屏幕
import logging
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
屏幕上打印:
WARNING:root:This is warning message
默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。
2.通过logging.basicConfig函数对日志的输出格式及方式做相关配置
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='myapp.log',
filemode='w')
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning 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被忽略
3.将日志同时输出到文件和屏幕
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='myapp.log',
filemode='w')
#################################################################################################
#定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
#################################################################################################
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
屏幕上打印:
root : INFO This is info message
root : WARNING This is warning message
./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message
4.logging之日志回滚
import logging
from logging.handlers import RotatingFileHandler
#################################################################################################
#定义一个RotatingFileHandler,最多备份5个日志文件,每个日志文件最大10M
Rthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler)
################################################################################################
从上例和本例可以看出,logging有一个日志处理的主对象,其它处理方式都是通过addHandler添加进去的。
logging的几种handle方式如下:
logging.StreamHandler: 日志输出到流,可以是sys.stderr、sys.stdout或者文件
logging.FileHandler: 日志输出到文件
日志回滚方式,实际使用时用RotatingFileHandler和TimedRotatingFileHandler
logging.handlers.BaseRotatingHandler
logging.handlers.RotatingFileHandler
logging.handlers.TimedRotatingFileHandler
logging.handlers.SocketHandler: 远程输出日志到TCP/IP sockets
logging.handlers.DatagramHandler: 远程输出日志到UDP sockets
logging.handlers.SMTPHandler: 远程输出日志到邮件地址
logging.handlers.SysLogHandler: 日志输出到syslog
logging.handlers.NTEventLogHandler: 远程输出日志到Windows NT/2000/XP的事件日志
logging.handlers.MemoryHandler: 日志输出到内存中的制定buffer
logging.handlers.HTTPHandler: 通过"GET"或"POST"远程输出到HTTP服务器
由于StreamHandler和FileHandler是常用的日志处理方式,所以直接包含在logging模块中,而其他方式则包含在logging.handlers模块中,
上述其它处理方式的使用请参见python2.5手册!
5.通过logging.config模块配置日志
#logger.conf
###############################################
[loggers]
keys=root,example01,example02
[logger_root]
level=DEBUG
handlers=hand01,hand02
[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0
[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
###############################################
[handlers]
keys=hand01,hand02,hand03
[handler_hand01]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)
[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form01
args=('myapp.log', 'a')
[handler_hand03]
class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=('myapp.log', 'a', 10*1024*1024, 5)
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S
[formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=
上例3:
import logging
import logging.config
logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example01")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')
上例4:
import logging
import logging.config
logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example02")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')
1.简单的将日志打印到屏幕
import logging
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
屏幕上打印:
WARNING:root:This is warning message
默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。
2.通过logging.basicConfig函数对日志的输出格式及方式做相关配置
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='myapp.log',
filemode='w')
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning 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被忽略
3.将日志同时输出到文件和屏幕
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='myapp.log',
filemode='w')
#################################################################################################
#定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
#################################################################################################
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
屏幕上打印:
root : INFO This is info message
root : WARNING This is warning message
./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message
4.logging之日志回滚
import logging
from logging.handlers import RotatingFileHandler
#################################################################################################
#定义一个RotatingFileHandler,最多备份5个日志文件,每个日志文件最大10M
Rthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler)
################################################################################################
从上例和本例可以看出,logging有一个日志处理的主对象,其它处理方式都是通过addHandler添加进去的。
logging的几种handle方式如下:
logging.StreamHandler: 日志输出到流,可以是sys.stderr、sys.stdout或者文件
logging.FileHandler: 日志输出到文件
日志回滚方式,实际使用时用RotatingFileHandler和TimedRotatingFileHandler
logging.handlers.BaseRotatingHandler
logging.handlers.RotatingFileHandler
logging.handlers.TimedRotatingFileHandler
logging.handlers.SocketHandler: 远程输出日志到TCP/IP sockets
logging.handlers.DatagramHandler: 远程输出日志到UDP sockets
logging.handlers.SMTPHandler: 远程输出日志到邮件地址
logging.handlers.SysLogHandler: 日志输出到syslog
logging.handlers.NTEventLogHandler: 远程输出日志到Windows NT/2000/XP的事件日志
logging.handlers.MemoryHandler: 日志输出到内存中的制定buffer
logging.handlers.HTTPHandler: 通过"GET"或"POST"远程输出到HTTP服务器
由于StreamHandler和FileHandler是常用的日志处理方式,所以直接包含在logging模块中,而其他方式则包含在logging.handlers模块中,
上述其它处理方式的使用请参见python2.5手册!
5.通过logging.config模块配置日志
#logger.conf
###############################################
[loggers]
keys=root,example01,example02
[logger_root]
level=DEBUG
handlers=hand01,hand02
[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0
[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
###############################################
[handlers]
keys=hand01,hand02,hand03
[handler_hand01]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)
[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form01
args=('myapp.log', 'a')
[handler_hand03]
class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=('myapp.log', 'a', 10*1024*1024, 5)
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S
[formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=
上例3:
import logging
import logging.config
logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example01")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')
上例4:
import logging
import logging.config
logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example02")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')
发表评论
-
MacOS M1 安装rocketmq-client-python
2021-11-25 17:26 10011 下载 https://github.com/apache ... -
python克隆数据 copy
2013-03-07 14:16 929现在看到了 Python 优美的设计。那下面的问题是,如果我们 ... -
python Queue模块
2013-02-22 17:07 9702011-04-20 17:11:05| 分类: Pyth ... -
[emerg] 10464#0: unknown directive "ssl"
2013-02-01 11:57 3839#yum install openssl #yum insta ... -
python flask应用 Principal 授权认证
2012-12-14 11:56 1843''' Created on 2012-6-14 ... -
sitecustomize.py 用法
2012-11-19 15:48 24011、在python安装目录下的lib下的site-packag ... -
加菲小小小猫 python菜鸟侃大山第一弹--目录
2012-06-26 13:33 0欢迎来到加菲小小小猫菜鸟讲堂,这期课程共计20课时,主要内容为 ... -
加菲小小小猫 python菜鸟侃大山第一弹--目录
2012-06-26 11:06 4欢迎来到加菲小小小猫菜鸟讲堂,这期课程共计20 ... -
TypeError: 'module' object is not callable 解决
2012-04-17 16:03 3944原文地址:http://hi.baidu.com/bsndhs ... -
python 自定义py文件中方法导入
2012-04-06 14:45 2794例子: 工程 ... -
pymongo 模糊查询
2012-04-01 17:32 5874如果是mongodb的客户端下 直接输入命令 db.devi ... -
pymongo $addToSet 和 $set 区别
2012-03-28 15:35 2429conn = Connection("127 ... -
python解决 'ascii' codec can't encode characters
2012-03-27 18:08 12133异常: 'ascii' codec can't encode ... -
python mongodb time的妙用
2012-03-19 14:41 1029需要把这条日志的时间放到临近的5分钟内, 时间段为:0,5,1 ... -
python ftp上传下载文件,支持断点续传
2012-03-14 11:41 4474功能:ftp断点上传下载 仅供参考: #encodin ... -
python 百分号使用
2012-03-09 12:17 3989原文地址 http://developer ... -
celery+ rabbitMq + python linux是下配置 序
2012-02-27 04:42 940我安装的时候就遇到了很多麻烦,主要是跟中linux包的依赖。。 ... -
python **args * args
2012-02-20 18:12 792转载 http://jimi68.iteye.com/blo ... -
python paramiko pycropto 安装
2012-02-17 19:30 997http://www.voidspace.org.uk/pyt ... -
python 多线程
2012-02-17 16:18 1034基础不必多讲,还是直接进入python。 Pyth ...
相关推荐
### Python的logging模块详解 #### 一、简介与应用场景 在进行Python开发时,日志模块是必不可少的一部分,尤其对于大型或复杂的项目来说更是如此。Python内置的`logging`模块提供了一种简单且灵活的方式来记录...
1. **使用`QueueHandler`和`QueueListener`**:Python的`logging.handlers`模块提供了`QueueHandler`和`QueueListener`,它们允许进程通过消息队列传递日志事件。主进程可以监听队列并将其写入日志文件,而其他子...
logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而...
在Python程序中使用logging模块可以帮助开发者跟踪程序运行状态,诊断错误,以及在多线程或多进程环境中进行有效的日志管理。 首先,我们来看一下logging模块的基本用法。在示例代码中,首先导入了logging和sys模块...
**Python-Logbook:超越内置logging库的日志管理利器** 在Python编程中,日志记录是必不可少的功能,它有助于开发者追踪程序运行状态、错误信息以及调试过程中的关键数据。Python自带了一个内置的`logging`模块,它...
通过使用"logging-loki",Python开发者可以将他们的应用日志轻松地发送到Loki,进行集中管理和分析。 在"python-logging-loki-0.2.0"这个压缩包中,通常会包含以下内容: 1. `setup.py`:这是Python包的安装脚本,...
实现了简单版本的logging.config,支持一般的通过config文件进行配置。感觉还有更好的方法,是直接利用logging.config.fileConfig(log_config_file)方式读进来之后,通过修改handler方式来进行修改。 复制代码 代码...
python使用logging日志
### Python日志输出详解——深入理解logging模块 在Python编程中,日志系统扮演着至关重要的角色,尤其是在处理复杂项目时。它不仅帮助开发者追踪软件运行过程中的各种事件,还能在遇到问题时提供宝贵的线索。...
Python的`logging`模块是Python标准库的一部分,专门用于处理日志记录。 首先,日志的作用非常多样,它可以记录程序运行的调试信息、普通的系统信息、警告信息、错误信息和严重错误信息。通过分析日志,我们可以...
**Python库ecs-logging-1.0.0详解** 在Python开发中,库扮演着至关重要的角色,它们提供了丰富的功能,使开发者能够高效地编写代码。`ecs-logging-1.0.0.tar.gz`是一个专门针对日志管理的Python库,它为Amazon ...
python代码:python中使用logging打印日志
Python的logging模块是用于生成日志的,它在软件开发中扮演着至关重要的角色,特别是在大型项目或服务器部署中。日志记录可以帮助开发者追踪程序运行情况,排查错误和异常,确保系统的稳定性和可靠性。 首先,...
python的logging模块提供了灵活的标准模块,使得任何Python程序都可以使用这个第三方模块来实现日志记录。python logging 官方文档 logging框架中主要由四个部分组成: Loggers: 可供程序直接调用的接口 Handlers:...
Python 的 `logging` 模块是内置的日志记录系统,为开发者提供了强大的日志记录功能。日志在软件开发中扮演着重要的角色,它能够帮助开发者追踪程序运行过程中的问题,便于调试和故障排查。根据官方推荐,不同场景下...
一个完美控制日志输出的工具类
文章详细讲述了如何使用Python自建logging模块,包括其基本功能的体验、日志级别的机制、基础类的组成等知识点。 首先,介绍logging模块的基本使用方法。通过简单的代码示例,展示了如何设置日志器logger,并输出...
首先,Python的标准库提供了`logging`模块,它是进行日志记录的基础。`logging`模块提供了多种级别的日志记录,如`DEBUG`、`INFO`、`WARNING`、`ERROR`和`CRITICAL`,以及各种处理器和格式化器来定制日志输出。 要...
转载于https://www.cnblogs.com/Nicholas0707/p/9021672.html,支持正版
综合以上的要求,我需要用到logging中得FileHandler(由于日志量会很大,这里需要用到RotatingFileHandler,日志达到设定大小后自动写到另外的文件中),Streamhandler(往控制台输出日志),SMTPHanler(用于致命...