modules/python/utils/logger_config.py (27 lines of code) (raw):

import logging class AzureDevOpsFormatter(logging.Formatter): VSO_FORMATS = { 'ERROR': '##vso[task.logissue type=error;]', 'WARNING': '##vso[task.logissue type=warning;]', 'INFO': '', 'DEBUG': '##[debug]' } def format(self, record): vso_prefix = self.VSO_FORMATS.get(record.levelname, '') # Format the message without the VSO prefix first formatted_msg = super().format(record) # Then add the VSO prefix at the start return f"{vso_prefix}{formatted_msg}" def setup_logging(): root_logger = logging.getLogger() # Clear any existing handlers root_logger.handlers = [] formatter = AzureDevOpsFormatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) handler = logging.StreamHandler() handler.setFormatter(formatter) handler.setLevel(logging.INFO) root_logger.addHandler(handler) root_logger.setLevel(logging.INFO) return root_logger def get_logger(name): return logging.getLogger(name)