python学习day29 configparse logging模块

configparse模块

http://www.cnblogs.com/Eva-J/articles/7228075.html#_label13

处理配置文件的模块,但是格式有严格的要求:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
  
[bitbucket.org]
User = hg
  
[topsecret.server.com]
Port = 50022
ForwardX11 = no

用python生成这样一个文件,保存成.ini格式

import configparser

config = configparser.ConfigParser()

config["DEFAULT"] = {'ServerAliveInterval': '45',
                      'Compression': 'yes',
                     'CompressionLevel': '9',
                     'ForwardX11':'yes'
                     }

config['bitbucket.org'] = {'User':'hg'}

config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'}

with open('example.ini', 'w') as configfile:
   config.write(configfile)

 

logging模块

 日志模块

import logging

logging.debug('debug message')       # 低级别的 # 排错信息
logging.info('info message')            # 正常信息
logging.warning('warning message')      # 警告信息
logging.error('error message')          # 错误信息
logging.critical('critical message') # 高级别的 # 严重错误信息

默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。

logging.basicConfig规范日志的记录信息:

import logging
logging.basicConfig(level=logging.WARNING,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',  # 日期
                    filename='test.log',  # 写入的文件名称
                    filemode='a')   # 追加写入
try:
    int(input('num >>'))
except ValueError:
    logging.error('输入的值不是一个数字')

logging.debug('debug message')       # 低级别的 # 排错信息
logging.info('info message')            # 正常信息
logging.warning('warning message')      # 警告信息
logging.error('error message')          # 错误信息
logging.critical('critical message') # 高级别的 # 严重错误信息

当尝试输入的值不是int类型时,记录错误'输入的值不是一个数字'

logging.basicConfig的具体用法看eva老师的博客

basicconfig 简单 能做的事情相对少,因为:①中文的乱码问题,②不能同时往文件和屏幕上输出

 

配置log对象

稍微有点复杂 能做的事情相对多

import logging

logger = logging.getLogger()  # 创建一个Logger对象
fh = logging.FileHandler('log.log', encoding='utf-8')  # 创建一个handler对象,用于写入日志文件
sh = logging.StreamHandler()    # 再创建一个handler对象,用于输出到控制台
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  # 格式化
formatter2 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s [line:%(lineno)d] : %(message)s')
# 文件操作符 和 格式关联
fh.setFormatter(formatter)
sh.setFormatter(formatter2)
# logger 对象 和 文件操作符 关联
logger.addHandler(fh)
logger.addHandler(sh)
logging.debug('debug message')       # 低级别的 # 排错信息
logging.info('info message')            # 正常信息
logging.warning('警告错误')      # 警告信息
logging.error('error message')          # 错误信息
logging.critical('critical message') # 高级别的 # 严重错误信息

既写入文件又输出到控制台

 

posted @ 2018-12-25 20:21  xyfun72  阅读(152)  评论(0编辑  收藏  举报