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,输出日志信息到屏幕
心有猛虎,细嗅蔷薇