首页 > 代码库 > PYTHON LOGGING模块

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,输出日志信息到屏幕

PYTHON LOGGING模块