zoukankan      html  css  js  c++  java
  • logging 模块 与 logging 固定模块


    import logging

    # 1. 控制日志级别
    # 2. 控制日志格式
    # 3. 控制输出的目标为文件
    logging.basicConfig(filename='access.log',
    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
    level=10,
    )

    logging.debug('debug日志') # 10
    logging.info('info日志') # 20
    logging.warning('warning日志') #30
    logging.error('error日志')#40
    logging.critical('critical日志') #50

    # 火警的级别

    # 大功率电器
    # 抽烟
    # 烧烤
    # 自焚
    # 烧房

    # 1. 能够同时往终端与文件中记录日志
    # 2. 能够修改字符串编码

    import logging

    # 1. logger对象: 负责生产各种级别的日志
    logger1 = logging.getLogger('用户交易') # 日志名用来标识日志的与什么业务有关

    # 2. filter对象: 过滤日志

    # 3. handler对象: 控制日志输出目标位置
    fh1 = logging.FileHandler('a1.log',encoding='utf-8')
    fh2 = logging.FileHandler('a2.log',encoding='utf-8')
    ch = logging.StreamHandler()

    # 4. formmater对象
    formatter1 = logging.Formatter(
    fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p'
    )

    formatter2 = logging.Formatter(
    fmt='%(asctime)s - %(levelname)s : %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p'
    )

    # 5. 绑定logger对象与handler对象
    logger1.addHandler(fh1)
    logger1.addHandler(fh2)
    logger1.addHandler(ch)

    # 6. 绑定handler对象与formatter对象

    fh1.setFormatter(formatter1)
    fh2.setFormatter(formatter1)
    ch.setFormatter(formatter2)

    # 7. 设置日志级别,有logger对象与handler对象两层关卡,必须都放行最终日志才会放行,通常二者级别相同
    logger1.setLevel(10)
    fh1.setLevel(10)
    fh2.setLevel(10)
    ch.setLevel(10)

    # 8. 使用logger对象产生日志
    logger1.info('alex给egon转账1个亿')





    logging 固定模块
    standard_format = '%(asctime)s - task:%(name)s - %(filename)s:%(lineno)d -' 
    ' %(levelname)s : [%(message)s]'

    simple_format = '%(filename)s:%(lineno)d - %(levelname)s : [%(message)s]'

    fh1_path = r'a1.log'
    fh2_path = r'a2.log'

    # log配置字典
    LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
    'standard': {
    'format': standard_format
    },
    'simple': {
    'format': simple_format
    },
    },
    'filters': {},
    'handlers': {
    #打印到终端的日志
    'ch': {
    'level': 'DEBUG',
    'class': 'logging.StreamHandler', # 打印到终端
    'formatter': 'simple'
    },
    #打印到a1.log文件的日志
    'fh1': {
    'level': 'DEBUG',
    'class': 'logging.FileHandler', # 保存到文件
    'formatter': 'standard',
    'filename': fh1_path, # 日志文件的路径
    'encoding': 'utf-8', # 日志文件的编码,再也不用担心中文log乱码了
    },
    # 打印到a2.log文件的日志
    'fh2': {
    'level': 'DEBUG',
    'class': 'logging.FileHandler', # 保存到文件
    'formatter': 'simple',
    'filename': fh2_path, # 日志文件的路径
    'encoding': 'utf-8', # 日志文件的编码,再也不用担心中文log乱码了
    },

    },
    'loggers': {
    '': {
    'handlers': ['fh1', 'fh2', 'ch'],
    'level': 'DEBUG',
    },
    },
    }








  • 相关阅读:
    XHTML基础问答-给初学者
    动态改变表格的行数列数(添加表格)
    记录的添加,修改,删除等操作,??
    数据绑定
    优秀ASP.NET程序员修炼之路
    关于Command的ExecuteNonQuery(),ExecuteScalar(),ExecuteReader方法的区别
    MyEclipse7.5注册
    实用JavaScript代码库
    解决数据库录入中文数据乱码问题
    Oracle占用8080端口问题的解决
  • 原文地址:https://www.cnblogs.com/liu--huan/p/9456907.html
Copyright © 2011-2022 走看看