鱼C论坛

 找回密码
 立即注册
查看: 1306|回复: 1

[作品展示] 模块logging的分享,对爬虫也很有用的哦

[复制链接]
发表于 2019-4-14 04:15:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Stubborn 于 2019-4-14 04:18 编辑

日志模块:详解参考
当你代码写的越来越多的时候,一旦出错,非常辣眼睛,此时logging可以很快速的帮你找到错误地方哦。
  1. # -*- coding: utf-8 -*-
  2. __author__ = 'Alex'
  3. import os
  4. import logging
  5. from logging.handlers import TimedRotatingFileHandler
  6. # 日志级别
  7. CRITICAL = 50
  8. FATAL = CRITICAL
  9. ERROR = 40
  10. WARNING = 30
  11. WARN = WARNING
  12. INFO = 20
  13. DEBUG = 10
  14. NOTSET = 0

  15. CURRENT_PATH = os.path.dirname(os.path.abspath(__file__))
  16. ROOT_PATH = os.path.join(CURRENT_PATH, os.pardir)
  17. LOG_PATH = os.path.join(ROOT_PATH, 'log')


  18. class LogHandler(logging.Logger):
  19.     """
  20.     LogHandler
  21.     """

  22.     def __init__(self, name, level=DEBUG, stream=True, file=True):
  23.         self.name = name
  24.         self.level = level
  25.         logging.Logger.__init__(self, self.name, level=level)
  26.         if stream:
  27.             self.__setStreamHandler__()
  28.         if file:
  29.             self.__setFileHandler__()

  30.     def absolute_path(self):
  31.         currrent_path = os.path.realpath(__file__)  # 文件绝对路径
  32.         current_dir = os.path.split(currrent_path)[0]
  33.         return current_dir

  34.     def __setFileHandler__(self, level=None):
  35.         """
  36.         set file handler
  37.         :param level:
  38.         :return:
  39.         """
  40.         file_name = os.path.join(LOG_PATH, '{name}.log'.format(name=self.name))
  41.         # 设置日志回滚, 保存在log目录, 一天保存一个文件, 保留15天
  42.         file_handler = TimedRotatingFileHandler(filename=file_name, when='S', interval=1, backupCount=15)
  43.         file_handler.suffix = '%Y%m%d.log'
  44.         if not level:
  45.             file_handler.setLevel(self.level)
  46.         else:
  47.             file_handler.setLevel(level)
  48.         formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')

  49.         file_handler.setFormatter(formatter)
  50.         self.file_handler = file_handler
  51.         self.addHandler(file_handler)

  52.     def __setStreamHandler__(self, level=None):
  53.         """
  54.         set stream handler
  55.         :param level:
  56.         :return:
  57.         """
  58.         stream_handler = logging.StreamHandler()
  59.         formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
  60.         stream_handler.setFormatter(formatter)
  61.         if not level:
  62.             stream_handler.setLevel(self.level)
  63.         else:
  64.             stream_handler.setLevel(level)
  65.         self.addHandler(stream_handler)

  66.     def resetName(self, name):
  67.         """
  68.         reset name
  69.         :param name:
  70.         :return:
  71.         """
  72.         self.name = name
  73.         self.removeHandler(self.file_handler)
  74.         self.__setFileHandler__()


  75. if __name__ == '__main__':
  76.     log = LogHandler('test')
  77.     log.warning('this waring')
  78.     log.info('this info')
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-14 13:51:36 | 显示全部楼层
支持一下,厉害了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-26 06:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表