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,輸出日志資訊到螢幕
心有猛虎,細嗅薔薇