zoukankan      html  css  js  c++  java
  • 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,输出日志信息到屏幕

  • 相关阅读:
    编程及应用中的一些快捷键(持续更新中)
    html5入门(head部分的基本认识)
    html5入门(j简单了解html)
    动态规划 ship
    js 解决两值交换
    styled-components解决全局样式'injectGlobal' 废除的问题
    mysql sql更新密码失败
    window nginx 基础命令
    MySQL 8.0
    "unexpected console statement” in Node.js
  • 原文地址:https://www.cnblogs.com/stupid-vincent/p/6538812.html
Copyright © 2011-2022 走看看