zoukankan      html  css  js  c++  java
  • python logging

    # coonfig 版本
    # create config
    BASE_DIR = os.path.dirname(__file__)
    BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
    if not os.path.exists(BASE_LOG_DIR):
        os.mkdir(BASE_LOG_DIR)
    log_config = {
        'version': 1,
        'disable_existing_loggers': False,
        'loggers': {
            'django': {
                'handlers': ['TimedRotatingFileHandler'],
                'level': 'DEBUG',
                "propagate": True
            }
        },
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
                "level": "DEBUG",
                "formatter": "simple"
            },
            'filehander': {
                'class': 'logging.FileHandler',
                'filename': 'log.log',
                "level": "WARNING",
                "formatter": "verbose"
            },
            'RotatingFileHandler': {
                'class': 'logging.handlers.RotatingFileHandler',
                'level': 'ERROR',
                'filename': os.path.join(BASE_LOG_DIR, "project_error.log"),  # 日志文件
                'maxBytes': 1024 * 1024 * 1024 * 1,  # 1GB
                'backupCount': 3,  # 备份数为3  xx.log --> xx.log.1 --> xx.log.2 --> xx.log.3
                'formatter': 'verbose',
                'encoding': 'utf-8',
            },  # 备份代码出错的地方
            'TimedRotatingFileHandler': {
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'level': 'INFO',
                'filename': os.path.join(BASE_LOG_DIR, "project_info.log"),  # 日志文件
                'backupCount': 30,  # 备份数为  xx.log --> xx.log.1 --> xx.log.2 --> xx.log.3
                'when': 'D',
                'formatter': 'simple',
                'encoding': 'utf-8',
            },  # 备份日常的信息
        },
        'formatters': {
            'verbose': {
                'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
                          '[%(levelname)s][%(message)s]',
                'datefmt': '%Y-%m-%d %H:%M:%S'
            },
            'simple': {
                'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s',
                'datefmt': '%Y-%m-%d %H:%M:%S'
            }
        }
    }
    logging.config.dictConfig(log_config)
    
    # create logger
    logger = logging.getLogger('django')
    
    # 'application' code
    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warn message')
    logger.error('error message')
    logger.critical('critical message')
    #DJANGO
    BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
    if not os.path.exists(BASE_LOG_DIR):
        os.mkdir(BASE_LOG_DIR)
    
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'loggers': {
            'django.request': {  # 所有的请求信息
                'handlers': ['console'],
                'level': 'ERROR',
                'propagate': False,
            },
            'django.db.backends': {
                'handlers': ['RotatingFileHandler'],
                'level': 'ERROR',
                'propagate': False,
            }
        },
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
                "level": "DEBUG",
                "formatter": "simple"
            },
            'filehander': {
                'class': 'logging.FileHandler',
                'filename': 'log.log',
                "level": "WARNING",
                "formatter": "verbose"
            },
            'RotatingFileHandler': {
                'class': 'logging.handlers.RotatingFileHandler',
                'level': 'ERROR',
                'filename': os.path.join(BASE_LOG_DIR, "project_error.log"),  # 日志文件
                'maxBytes': 1024 * 1024 * 1024 * 1,  # 1GB
                'backupCount': 3,  # 备份数为3  xx.log --> xx.log.1 --> xx.log.2 --> xx.log.3
                'formatter': 'verbose',
                'encoding': 'utf-8',
            },  # 备份代码出错的地方
            'TimedRotatingFileHandler': {
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'level': 'INFO',
                'filename': os.path.join(BASE_LOG_DIR, "project_info.log"),  # 日志文件
                'backupCount': 30,  # 备份数为  xx.log --> xx.log.1 --> xx.log.2 --> xx.log.3
                'when': 'D',
                'formatter': 'simple',
                'encoding': 'utf-8',
            },  # 备份日常的信息
        },
        'formatters': {
            'verbose': {
                'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
                          '[%(levelname)s][%(message)s]',
                'datefmt': '%Y-%m-%d %H:%M:%S'
            },
            'simple': {
                'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s',
                'datefmt': '%Y-%m-%d %H:%M:%S'
            }
        }
    }
  • 相关阅读:
    最全Redis面试题
    mabatisplus-update
    windows下安装redis并部署服务
    登录方案
    redis
    IntelliJ IDEA Debug模式启动项目
    物流跟踪 调用快递鸟API
    springboot中文官方文档
    国内物流地址
    什么是电磁兼容?什么是EMC设计?
  • 原文地址:https://www.cnblogs.com/liuer-mihou/p/13528995.html
Copyright © 2011-2022 走看看