PYTHON LOGGING模块
PYTHON的日志功能,一开始在python2.4上运行,各种报错,后来换成python2.7.9。
附上linux python升级过程:
1、下载python安装包---Python-2.7.9.tar.xz 2、下载完成后到下载目录下,解压 tar -xzvf Python-3.3.0.tgz 3、进入解压缩后的文件夹 cd Python-3.3.0 4、在编译前先在/usr/local建一个文件夹python3(作为python的安装路径,以免覆盖老的版本) mkdir /usr/local/python3 5、开始编译安装 ./configure --prefix=/usr/local/python3 make make install 6、此时没有覆盖老版本,再将原来/usr/bin/python链接改为别的名字 mv /usr/bin/python /usr/bin/python_old2 7、再建立新版本python的链接 ln -s /usr/local/python3/bin/python3/usr/bin/python 8、这个时候输入 python -V
# -*- coding=gbk -*- # filename:pythonglog.py __author__ = 'vincent' import logging import logging.config logging.config.fileConfig("pythonlog.conf")
# filename:pythonlog.conf # 定义logger模块,root是父类,必需存在的,其它的是自定义。 # logging.getLogger(NAME)便相当于向logging模块注册了一种日志打印 # name 中用 . 表示 log 的继承关系 [loggers] keys=root,main,console # 定义handler [handlers] keys=fileHandler,consoleHandler # 定义格式化输出 [formatters] keys=fmt #-------------------------------------------------- # 实现上面定义的logger模块,必需是[logger_xxxx]这样的形式 #-------------------------------------------------- # [logger_xxxx] logger_模块名称 # level 级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL # handlers 处理类,可以有多个,用逗号分开 # qualname logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。 # propagate 是否继承父类的log信息,0:否 1:是 [logger_root] level=INFO handlers=fileHandler [logger_main] level=ERROR handlers=fileHandler propagate=0 qualname=main [logger_console] level=INFO handlers=consoleHandler propagate=0 qualname=console #-------------------------------------------------- # handler #-------------------------------------------------- # [handler_xxxx] # class handler类名 # level 日志级别 # formatter,上面定义的formatter # args handler初始化函数参数 [handler_fileHandler] class=handlers.RotatingFileHandler level=INFO formatter=fmt args=('python.log', 'a') [handler_consoleHandler] class=StreamHandler level=INFO formatter=fmt args=(sys.stdout,) #-------------------------------------------------- # 日志格式 #-------------------------------------------------- # %(asctime)s 年-月-日 时-分-秒,毫秒 2013-04-26 20:10:43,745 # %(filename)s 文件名,不含目录 # %(pathname)s 目录名,完整路径 # %(funcName)s 函数名 # %(levelname)s 级别名 # %(lineno)d 行号 # %(module)s 模块名 # %(message)s 消息体 # %(name)s 日志模块名 # %(process)d 进程id # %(processName)s 进程名 # %(thread)d 线程id # %(threadName)s 线程名 [formatter_fmt] format=[%(asctime)s F=%(filename)s L=%(lineno)d] [%(message)s] datefmt=%Y/%m/%d %H:%M:%S class=logging.Formatter
模块测试:
__author__ = 'vincent' import os import sys import logging import pythonlog console=logging.getLogger("console") console.info("THIS IS LOGGER INFO!")
定义了两个日志句柄,一个main,输出日志信息到文件python.log,另一个console,输出日志信息到屏幕
心有猛虎,细嗅蔷薇