1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #! /usr/bin/env python
- # -*- coding: utf-8 -*-
- # vim:fenc=utf-8
- import logging
- from logging.handlers import RotatingFileHandler
- import configs
- COLORS = {
- 'DEBUG': '\033[0m', # 蓝色
- 'INFO': '\033[32m', # 绿色
- 'WARNING': '\x1b[33;20m', # 黄色
- 'ERROR': '\033[91m', # 红色
- 'CRITICAL': '\033[95m', # 紫色
- 'RESET': '\033[0m', # 重置颜色
- }
- class ColoredFormatter(logging.Formatter):
- def format(self, record):
- # 获取原始日志消息
- message = super().format(record)
- # 根据日志等级添加颜色
- if record.levelname in COLORS:
- message = f"{COLORS[record.levelname]}{message}{COLORS['RESET']}"
- return message
- def setup_root_logger(level=logging.DEBUG, logfile_name='service.log'):
- formatter = ColoredFormatter(
- '%(asctime)s - %(name)s %(funcName)s[%(lineno)d] - %(levelname)s - %(message)s'
- )
- console_handler = logging.StreamHandler()
- console_handler.setLevel(logging.DEBUG)
- console_handler.setFormatter(formatter)
- root_logger = logging.getLogger()
- root_logger.handlers.clear()
- root_logger.addHandler(console_handler)
- if configs.get_env() == 'prod':
- file_handler = RotatingFileHandler(
- f'/var/log/agent_service/{logfile_name}',
- maxBytes=64 * 1024 * 1024,
- backupCount=5,
- encoding='utf-8'
- )
- file_handler.setLevel(logging.DEBUG)
- file_handler.setFormatter(formatter)
- root_logger.addHandler(file_handler)
- agent_logger = logging.getLogger('agent')
- agent_logger.setLevel(level)
- logger = logging.getLogger('agent')
|