python 彩色日誌配置
阿新 • • 發佈:2019-01-06
import os import logging import logging.config as log_conf import datetime import coloredlogs log_dir = os.path.dirname(os.path.dirname(__file__)) + '/logs' if not os.path.exists(log_dir): os.mkdir(log_dir) today = datetime.datetime.now().strftime("%Y%m%d") log_path = os.path.join(log_dir, f'weibo_{today}.log') log_config = { 'version': 1.0, 'formatters': { 'colored_console': {'()': 'coloredlogs.ColoredFormatter', 'format': "%(asctime)s - %(name)s - %(levelname)s - %(message)s", 'datefmt': '%H:%M:%S'}, 'detail': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s', 'datefmt': "%Y-%m-%d %H:%M:%S" # 如果不加這個會顯示到毫秒。 }, 'simple': { 'format': '%(name)s - %(levelname)s - %(message)s', }, }, 'handlers': { 'console': { 'class': 'logging.StreamHandler', # 日誌列印到螢幕顯示的類。 'level': 'INFO', 'formatter': 'colored_console' }, 'file': { 'class': 'logging.handlers.RotatingFileHandler', # 日誌列印到檔案的類。 'maxBytes': 1024 * 1024 * 1024, # 單個檔案最大記憶體 'backupCount': 1, # 備份的檔案個數 'filename': log_path, # 日誌檔名 'level': 'INFO', # 日誌等級 'formatter': 'detail', # 呼叫上面的哪個格式 'encoding': 'utf-8', # 編碼 }, }, 'loggers': { 'crawler': { 'handlers': ['console', 'file'], # 只打印螢幕 'level': 'DEBUG', # 只顯示錯誤的log }, 'parser': { 'handlers': ['file'], 'level': 'INFO', }, 'other': { 'handlers': ['console', 'file'], 'level': 'INFO', }, 'storage': { 'handlers': ['console', 'file'], 'level': 'INFO', } } } log_conf.dictConfig(log_config) crawler = logging.getLogger('crawler') storage = logging.getLogger('storage') coloredlogs.install(level='DEBUG', logger=crawler) coloredlogs.install(level='DEBUG', logger=storage)