关于python的log日志如何去写

18.日志(模块 logging)

  • 基本应用

  • 日志处理本质:Logger/FileHandler/Formatter

    • 推荐处理日志方式

        import logging

      file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
      logging.basicConfig(
         format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
         datefmt='%Y-%m-%d %H:%M:%S %p',
         handlers=[file_handler,],
         level=logging.ERROR
                                      level 默认是ERROR 可以指定level   日志只写比 ERROR更高等级的 【 info < error < warning <.....】
      
      

      )

      logging.error('你好')
  • 推荐处理日志方式 + 日志分割

      import time
    import logging
    from logging import handlers
    # file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
    file_handler = handlers.TimedRotatingFileHandler(filename='x3.log', when='s', interval=5, encoding='utf-8')
    logging.basicConfig(
       format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
       datefmt='%Y-%m-%d %H:%M:%S %p',
       handlers=[file_handler,],
       level=logging.ERROR
    )

    for i in range(1,100000):
       time.sleep(1)
       logging.error(str(i))

    注意事项:

      # 在应用日志时,如果想要保留异常的堆栈信息。
    import logging
    import requests

    logging.basicConfig(
       filename='wf.log',
       format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
       datefmt='%Y-%m-%d %H:%M:%S %p',
       level=logging.ERROR
    )

    try:
       requests.get('http://www.xxx.com')
    except Exception as e:
       msg = str(e) # 调用e.__str__方法
       logging.error(msg,exc_info=True)
  • # 单例模式 设计模式
    # 什么是单例模式
    # 单例的应用场景
    # __new__方法 :创建实例的 并且在init之前工作
    # logging模块
    # 记录日志的
    # 用户 :
    # 程序员 :
    # 统计用的
    # 用来做故障排除的 debug
    # 用来记录错误,完成代码的优化的
    # logging.basicconfig
    # 使用方便
    # 不能实现 编码问题;不能同时向文件和屏幕上输出
    # logging.debug,logging.warning
    # logger对象
    # 复杂
    # 创建一个logger对象
    # 创建一个文件操作符
    # 创建一个屏幕操作符
    # 创建一个格式

    # 给logger对象绑定 文件操作符    # 吸星大法
    # 给logger对象绑定 屏幕操作符
    # 给文件操作符 设定格式
    # 给屏幕操作符 设定格式

    # 用logger对象来操作
    # logger = logging.getLogger()

    # fh = logging.FileHandler('log.log')    log信息文件写入
    # sh = logging.StreamHandler()   log信息屏幕显示
    # logger.addHandler(fh)        吸星大法
    # logger.addHandler(sh)  吸星大法
    # formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    # fh.setFormatter(formatter)
    # sh.setFormatter(formatter)
    # logger.warning('message')

19.项目结构目录

# **************** 项目结构目录文件夹 ****************# 6个项目目录

# bin 可执行文件:程序入口

#config 配置&参数设置

# db 数据&内容

# lib 公共功能

# log 日志代码

# src 业务代码

原文地址:https://www.cnblogs.com/yx12138/p/10849041.html