- 浏览: 1010804 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (367)
- JavaScript (23)
- Java (60)
- Python (41)
- 其他 (36)
- SQL (4)
- 开发工具 (26)
- Linux (15)
- AJAX (6)
- Cache (3)
- 正则 (4)
- 架构 (9)
- 手机 (3)
- MySQL (4)
- Android (115)
- vps (1)
- 网站 (4)
- scale (3)
- 搜索引擎 (3)
- iPhone (2)
- hessian (1)
- hessdroid (1)
- 411 (1)
- jstat (1)
- gc (1)
- gallery (1)
- 惯性 (1)
- eclipse (1)
- mac wget error (1)
- miui file explorer 无用 解决办法 (1)
- vim (1)
最新评论
-
qingyezhangluo:
哎。楼主您既然是分享代码的为什么要加密的呢?而且问你密码还不回 ...
android应用换皮肤(转) -
MagicError:
kavoe 写道下载文件有密码。。。。
http抓包工具 -
knightdf:
我先试下再来
JAVA的RAS加密例子 -
kavoe:
下载文件有密码。。。。
http抓包工具 -
changanfounder:
hmc1985 写道setCallbackDuringFlin ...
android gallery滑动惯性问题
Configuring Logging
Programmers can configure logging either by creating loggers, handlers, and formatters explicitly in a main module with the configuration methods listed above (using Python code), or by creating a logging config file. The following code is an example of configuring a very simple logger, a console handler, and a simple formatter in a Python module:
程序员可以显示地通过在主模块里面用上面列出的配置方法创建loggers,handlers和formatters的方式,或者,创建一个logging的配置文件的方式来配置logging.以下是一个非常简单的配置logger的例子,一个python模块里面包含了一个命令行handler和一个简单的formmater:
import logging
#create logger
logger = logging.getLogger("simple_example")
logger.setLevel(logging.DEBUG)
#create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
#create formatter
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s -
%(message)s")
#add formatter to ch
ch.setFormatter(formatter)
#add ch to logger
logger.addHandler(ch)
#"application" code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
Running this module from the command line produces the following output:
在在字符界面下运行上面的命令产生以下输出:
jmjones@bean:~/logging $ python simple_logging_module.py
2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message
2005-03-19 15:10:26,620 - simple_example - INFO - info message
2005-03-19 15:10:26,695 - simple_example - WARNING - warn message
2005-03-19 15:10:26,697 - simple_example - ERROR - error message
2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message
The following Python module creates a logger, handler, and formatter nearly identical to those in the example listed above, with the only difference being the names of the objects:
跟例子差不多,以下的Python模块创建了一个logger,一个handler和一个formatter,这里仅仅换了换名字:
import logging
import logging.config
logging.config.fileConfig("logging.conf")
#create logger
logger = logging.getLogger("simpleExample")
#"application" code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
Here is the logging.conf file:
这里是logging.conf文件:
[loggers]
keys=root,simpleExample
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
The output is nearly identical to that of the non-config-file-based example:
输出跟没有配置文件的例子完全一样:
jmjones@bean:~/logging $ python simple_logging_config.py
2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message
2005-03-19 15:38:55,979 - simpleExample - INFO - info message
2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message
2005-03-19 15:38:56,055 - simpleExample - ERROR - error message
2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message
The config file approach has a few advantages over the Python code approach. The first is the separation of configuration and code. The second is the ability of noncoders to easily modify the logging properties. The third is the really cool listen() method, which causes the application to listen on a socket for new configurations--and will update configurations at runtime without forcing you to restart the application!
用配置文件的方法比直接在Python代码里面写有几个好处.第一个好处是配置和代码的分离.第二个好处是即使看不懂程序也能方便的更改logging的属性.第三个好处是”最酷的listen()方法”,用这个方法可以让你的应用程序在一个socket上监听新的配置信息 -- 可以直接在运行时改变配置而用不着重启你的应用~!
Here is a slight modification of the previous config file-based script:
这里是一个简单的基于上面配置文件的脚本:
#!/usr/bin/env python
import logging
import logging.config
import time
import os
#specify logging config file
logging.config.fileConfig("logging.conf")
#create and start listener on port 9999
t = logging.config.listen(9999)
t.start()
#create logger
logger = logging.getLogger("simpleExample")
#watch for existence of file named "f"
#loop through the code while this file exists
while os.path.isfile('f'):
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
time.sleep(5)
#cleanup
logging.config.stopListening()
t.join()
That was simple enough. Unfortunately, figuring out what format the config file needs to be took some investigation. The only useful information that I found in the Python Standard Library Reference documentation was in the logging configuration section under the listen() method:
够简单了吧!不幸地是,理解这个配置文件需要进行些研究.我仅仅在Python的标准库文档logging配置一节里面的listen()方法找到一点有用的信息:
Logging configurations will be sent as a file suitable for processing by fileConfig().
Logging配置会作为一个能被fileConfig()方法处理的文件发送.
Pushing a filename did not work. Pushing the contents of a config file did not work. I had to dig into the source a little. The docstring for the logging socket server's handle() method is:
用文件名不行,用配置文件的内容也不行.我不得不深入一下源码logging socket服务器的handler()方法的docstring是这样写的:
Handle a request.
Each request is expected to be a 4-byte length,
followed by the config file. Uses fileConfig() to do the
grunt work.
处理一个请求.
每个请求都应该是4-byte长,后面跟一个配置文件.用fileConfig()方法完成剩下的工作.
This struck me as a bit odd. Does that mean you can send lengths only for config files of up to 9,999 bytes? Converting the length of the config file to a string did not work either. I looked farther down in the source code of the handle() method. Aaahh. It does a struct.unpack(), so the socket expects the first 4 bytes to be packed binary data. I tried it this way and it worked. The following snippet of code sends the contents of the file named on the command line to localhost:9999:
这让我感到有些奇怪.难道说只能发送长度大于9,999bytes的配置文件吗?而且把一个配置文件的内容转化成一个字符串也是不起作用.我又看了一下handler()方法的源码.哈.它其实做了struct.unpack()!,所以socket才要求前面4个bytes打包二进制的数据.我用这种方式重新试了一下,可以了.下面的代码片断把指定的文件内容通过字符界面发送到了localhost:9999端口:
#!/usr/bin/env python
import socket
import sys
import struct
HOST = 'localhost'
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "connecting..."
s.connect((HOST, PORT))
print "connected..."
data_to_send = open(sys.argv[1], "r").read()
print "sending length..."
s.send(struct.pack(">L", len(data_to_send)))
print "sending data..."
s.send(data_to_send)
print "closing..."
s.close()
发表评论
-
python图形处理库Python Imaging Library (PIL)简介及安装(转载收藏)
2010-10-14 13:02 2105[简介] 这两天用python写一个程序,需要对各种格式的 ... -
python:在python中使用opencv进行摄像头编程初体验
2009-12-02 13:11 3962闲着没事做,前段时间买了个摄像头,在ubuntu上用。打开ch ... -
python使用tuple作参数
2009-08-07 15:53 3626def a(*aa): print aa[0] ... -
python sort key
2009-08-07 13:18 2468>>> a=range(10) >&g ... -
python 自带小爬虫
2009-08-07 10:28 1959#! /usr/bin/env python “”" ... -
Python支持中文
2009-08-07 10:27 3232让Python支持中文要在Python代码头部加上# -* ... -
Python多线程 简明例子
2009-08-07 10:27 3050综述 多线程是 ... -
Python多线程编程
2009-08-07 10:26 4068我们在做软件开发的时 ... -
python循环采集
2009-08-07 10:26 1612html=”<td>1</td>< ... -
python的字符操作函数
2009-08-07 10:25 2113在python有各种各样的stri ... -
python去除html标签
2009-08-07 10:24 3521from HTMLParser import HTMLPars ... -
python 下载文件
2009-08-06 14:12 4861抓取数据的时候,有的时候是需要下载一些文件的,比如图片,pdf ... -
python 去除空格,回车符,换行符
2009-08-06 14:05 10674s=’ as asdas \r\nasda’print ” ... -
Python版Linux 下的迅雷
2009-07-29 11:56 2876Linux 下该不该有迅雷,这个问题一直存在分歧,在此也不予讨 ... -
linux下python默认版本的选择
2009-07-29 10:50 2602当你在linux系统下安装了不同版本的python, 怎样设定 ... -
Python监视进程
2009-06-23 11:03 2498由subprocess创建一个进程,然后进行监视 每一秒钟查看 ... -
python pyc pyo
2009-06-19 13:56 4778python并非完全是解释性语言,它是有编译的,先把源码py文 ... -
python chr()、unichr()和ord()
2009-06-18 17:15 64220chr()、unichr()和ord() chr()函数用一 ... -
python打印所有汉字...
2009-06-18 17:04 2701for ch in xrange(0x4e00, 0x9fa6 ... -
程序签名
2009-06-18 16:43 1131打开https://www.symbiansigned.com ...
相关推荐
### Python的logging模块详解 #### 一、简介与应用场景 在进行Python开发时,日志模块是必不可少的一部分,尤其对于大型或复杂的项目来说更是如此。Python内置的`logging`模块提供了一种简单且灵活的方式来记录...
logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而...
Python的`logging`模块是Python标准库的一部分,专门用于处理日志记录。 首先,日志的作用非常多样,它可以记录程序运行的调试信息、普通的系统信息、警告信息、错误信息和严重错误信息。通过分析日志,我们可以...
转载于https://www.cnblogs.com/Nicholas0707/p/9021672.html,支持正版
在Python编程中,日志模块`logging`是一个强大的工具,用于记录程序运行过程中的各种信息。在多进程环境中,正确地使用`logging`模块尤为重要,因为它可以帮助开发者追踪和诊断分布式系统的问题。本文将深入探讨如何...
首先,让我们深入了解Python的logging模块。它是Python标准库的一部分,提供了丰富的日志记录功能,允许开发者在代码中插入日志语句,以便在运行时或之后收集和分析应用程序的行为。logging模块提供了不同级别的日志...
Python的logging模块是Python标准库中用于记录日志的一个强大工具,它提供灵活的日志系统,允许开发者记录不同级别的信息,便于开发调试、监控运行状态和故障排查。文章详细讲述了如何使用Python自建logging模块,...
Python 的 `logging` 模块是用于记录程序运行过程中各种事件的重要工具,它提供了一种标准的方法来输出不同级别的日志信息,包括调试(debug)、信息(informational)、警告(warnings)、错误(error)和严重错误...
在Python中,logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中。在大型项目中,将日志信息记录到文件中是非常重要的,因为它可以帮助开发人员或者运维...
使用python的logging模块时,除了想将日志记录在文件中外,还希望在前台执行python脚本时,可以将日志直接输出到标准输出std.out中。 实现 logging模块可以有两种方法实现该功能: 方案一:basicconfig import ...
Python的logging模块是用于处理程序运行过程中的日志记录,它提供了一种灵活且强大的方式来跟踪应用程序的行为。本文将深入探讨logging模块中的handlers,这是日志处理的核心组件,它们负责将日志信息发送到不同的...
Python的logging模块是用于生成日志的工具,它在软件开发中扮演着至关重要的角色,尤其是在调试和维护阶段。本文将深入解析logging模块的工作原理,并介绍如何在实际应用中使用它。 首先,我们要了解logging模块的...
Python的logging模块是用于生成日志的,它在软件开发中扮演着至关重要的角色,特别是在大型项目或服务器部署中。日志记录可以帮助开发者追踪程序运行情况,排查错误和异常,确保系统的稳定性和可靠性。 首先,...
Python的logging模块是用于日志记录的标准库,其功能强大且灵活,适用于各种规模和类型的项目。logging模块提供了丰富的功能,包括定义不同的日志级别、处理日志输出、过滤不必要的日志信息以及自定义日志格式,使得...
- logging模块是Python标准库的一部分,提供灵活的日志系统,允许集成不同来源的日志信息。 - 默认日志级别包括DEBUG、INFO、WARNING、ERROR、CRITICAL等,可根据需要配置。 5. logging模块的核心组件: - ...
Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志...
本文实例讲述了python日志logging模块使用方法。分享给大家供大家参考,具体如下: 一、从一个使用场景开始 开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件 import logging # 创建一个logger ...
Python的logging模块是用于日志记录的标准库,它提供了丰富的功能来满足不同级别的日志需求,从简单的调试信息到复杂的日志记录策略。在Python程序中使用logging模块可以帮助开发者跟踪程序运行状态,诊断错误,以及...
python的logging模块提供了灵活的标准模块,使得任何Python程序都可以使用这个第三方模块来实现日志记录。python logging 官方文档 logging框架中主要由四个部分组成: Loggers: 可供程序直接调用的接口 Handlers:...