# Copyright (C) 2005-2025 Splunk Inc. All Rights Reserved. from ITOA.setup_logging import setup_logging, formatLoggerNameAndFile # Make sure migration logger is called and initialized # before any other import that can init global logger unexpectedly def getMigrationLogger(): log_name, log_file = formatLoggerNameAndFile(logger_file=None, logger_name='itsi.migration') # This call will return a separate logger object different from the singleton logger for the process. return setup_logging(log_file, log_name) logger = getMigrationLogger() ''' PrefixLogger will prefix every log message with a string specified once during logger init ''' class PrefixLogger(object): def __init__(self, prefix='', separator=': ', logger=getMigrationLogger()): self.logger = logger self.prefix = prefix self.separator = separator def withPrefix(self, msg): return '%s%s%s' % (self.prefix, self.separator, msg) def exception(self, msg, *args, **kwargs): self.logger.exception(self.withPrefix(msg), *args, **kwargs) def error(self, msg, *args, **kwargs): self.logger.error(self.withPrefix(msg), *args, **kwargs) def warning(self, msg, *args, **kwargs): self.logger.warning(self.withPrefix(msg), *args, **kwargs) warn = warning def info(self, msg, *args, **kwargs): self.logger.info(self.withPrefix(msg), *args, **kwargs) def debug(self, msg, *args, **kwargs): self.logger.debug(self.withPrefix(msg), *args, **kwargs)