• Python日志


    一、logging

      1、Django settings.py配置:

    LOG_PATH = '/home/work/log/'
    # 如果不存在这个logs文件夹,就自动创建一个
    if not os.path.exists(LOG_PATH):
        os.makedirs(LOG_PATH)
    
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            # 日志格式
            'standard': {
                'format': '[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'},
            'simplify': {
                'format': '[%(asctime)s] [%(module)s:%(lineno)d] [%(levelname)s]- %(message)s'}
        },
        # 过滤
        'filters': {
        },
        'handlers': {
            # 控制台输出
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'standard'
            },
            # 默认记录所有日志
            'default': {
                'level': 'INFO',
                # 'class': 'logging.handlers.RotatingFileHandler',
                # 'filename': os.path.join(LOG_PATH, 'all-{}.log'.format(time.strftime('%Y-%m-%d'))),  # 日志输出文件
                # 'maxBytes': 1024 * 1024 * 500,  # 文件大小
                # 日志文件按日期翻转输出,每天一个文件,具体:https://docs.python.org/3/library/logging.handlers.html#timedrotatingfilehandler
                'class': 'logging.handlers.TimedRotatingFileHandler',
                # 凌晨翻转
                'when': 'midnight',
                'filename': os.path.join(LOG_PATH, 'all.log'),
                'backupCount': 15,  # 备份份数,保留15天的日志
                'formatter': 'standard',  # 使用哪种formatters日志格式
                'encoding': 'utf-8',  # 设置默认编码,否则打印出来汉字乱码
            },
            # 输出info日志
            'info': {
                'level': 'INFO',
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'when': 'midnight',
                'filename': os.path.join(LOG_PATH, 'info.log'),
                'backupCount': 15,
                'formatter': 'standard',
                'encoding': 'utf-8',  # 设置默认编码
            },
            # 错误日志输出
            'error': {
                'level': 'ERROR',
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'when': 'midnight',
                'filename': os.path.join(LOG_PATH, 'error.log'),
                'backupCount': 15,  # 备份数
                'formatter': 'standard',  # 输出格式
                'encoding': 'utf-8',  # 设置默认编码
            },
        },
        # 配置使用哪几种handlers来处理日志
        'loggers': {
            'django': {
                'handlers': ['info', 'error'],
                'level': 'INFO',
                'propagate': True
            },
            'django.request': {
                'handlers': ['info', 'error'],
                'level': 'INFO',
                'propagate': True,
            },
            # log 调用时需要当作参数传入,如:logging.getLogger("log")
            'log': {
                'handlers': ['info', 'error'],
                'level': 'INFO',
                'propagate': True
            },
        }
    }

       2、使用

    logger = logging.getLogger(__name__)
    
    logger.info("time: %s, hunan channels and programs sync start", datetime.datetime.now())

       或者:

        ①:定义一个日志处理方法

    # 日志
    def logger():
        def wrapper(cls):
            logger = logging.getLogger(cls.__name__)
            cls.logger = logger
            return cls
    
        return wrapper

        ②:使用@logger()注解

    @logger()
    class CableChannelPublisher(QueryMixin, CableCachePublisher):
        def run(self, **opt):
            self.logger.info("CableChannelPublisher! opt:%s", opt)

       

    附录:

      loggging官方文档:

        https://docs.python.org/zh-cn/3/howto/logging.html

        https://docs.python.org/zh-cn/3/library/logging.html

    END.

  • 相关阅读:
    Day13
    Day12
    Day11
    Day10
    Day9
    Day8
    Day7
    mac上使用gitlab拉项目报错Permissions 0644 for ...
    vue-cli3使用svg
    js合并多个array
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/15874205.html
Copyright © 2020-2023  润新知