#!/usr/bin/env python3 # -*- coding: utf-8 -*- ############################################################################# # # Copyright (C) 2022 The Qt Company Ltd. # Contact: https://www.qt.io/licensing/ # # This file is part of the release tools of the Qt Toolkit. # # $QT_BEGIN_LICENSE:GPL-EXCEPT$ # Commercial License Usage # Licensees holding valid commercial Qt licenses may use this file in # accordance with the commercial license agreement provided with the # Software or, alternatively, in accordance with the terms contained in # a written agreement between you and The Qt Company. For licensing terms # and conditions see https://www.qt.io/terms-conditions. For further # information use the contact form at https://www.qt.io/contact-us. # # GNU General Public License Usage # Alternatively, this file may be used under the terms of the GNU # General Public License version 3 as published by the Free Software # Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT # included in the packaging of this file. Please review the following # information to ensure the GNU General Public License requirements will # be met: https://www.gnu.org/licenses/gpl-3.0.html. # # $QT_END_LICENSE$ # ############################################################################# import functools import logging import os from typing import Any, Callable import colorlog def init_logger(dunder_name: str, debug_mode: bool) -> logging.Logger: log_format = "%(asctime)s %(levelname)s: %(message)s" log_format_file = "%(asctime)s %(levelname)s:%(filename)s:%(lineno)d(%(process)d): %(message)s" bold_seq = "\033[1m" colorlog_format = f"{bold_seq} " "%(log_color)s " f"{log_format}" colorlog.basicConfig(format=colorlog_format) logger = logging.getLogger(dunder_name) if debug_mode or os.environ.get("QT_PACKAGING_DEBUG"): logger.setLevel(logging.DEBUG) else: logger.setLevel(logging.INFO) # Output full log file_handler = logging.FileHandler('packaging.log') file_handler.setLevel(logging.DEBUG) formatter = logging.Formatter(log_format_file) file_handler.setFormatter(formatter) logger.addHandler(file_handler) # Output warning log file_handler = logging.FileHandler('packaging.warning.log') file_handler.setLevel(logging.WARNING) formatter = logging.Formatter(log_format_file) file_handler.setFormatter(formatter) logger.addHandler(file_handler) # Output error log file_handler = logging.FileHandler('packaging.error.log') file_handler.setLevel(logging.ERROR) formatter = logging.Formatter(log_format_file) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger def with_no_logging(function: Callable[[Any], Any]) -> Any: @functools.wraps(function) def wrapper(*args: Any, **kwargs: Any) -> Any: logging.disable(logging.FATAL) try: return function(*args, **kwargs) finally: logging.disable(logging.NOTSET) return wrapper