def getLogger(*args, **kwargs):
log_mode = local_config['<STR_LIT>']['<STR_LIT>']<EOL>file_format = '<STR_LIT>'<EOL>stream_format = '<STR_LIT>'<EOL>syslog_format = '<STR_LIT>'<EOL>if local_config['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>syslog_facility = '<STR_LIT>'<EOL><DEDENT>else:<EOL><INDENT>syslog_facility = '<STR_LIT:user>'<EOL><DEDENT>asctime_format = "<STR_LIT>"<EOL>logger = logging.getLogger(*args, **kwargs)<EOL>logger.propagate = False<EOL>try:<EOL><INDENT>if not logger.handlers:<EOL><INDENT>if mode_assignment(log_mode) == '<STR_LIT>':<EOL><INDENT>f_handler = logging.FileHandler(local_config['<STR_LIT>']['<STR_LIT>'])<EOL>f_formatter = logging.Formatter(file_format, asctime_format)<EOL>f_handler.setFormatter(f_formatter)<EOL>logger.addHandler(f_handler)<EOL>logger.setLevel(logging.DEBUG)<EOL><DEDENT>elif mode_assignment(log_mode) == '<STR_LIT>':<EOL><INDENT>s_handler = logging.StreamHandler()<EOL>s_formatter = logging.Formatter(stream_format)<EOL>s_handler.setFormatter(s_formatter)<EOL>logger.addHandler(s_handler)<EOL>logger.setLevel(logging.DEBUG)<EOL><DEDENT>elif mode_assignment(log_mode) == '<STR_LIT>':<EOL><INDENT>sys_handler = logging.handlers.SysLogHandler(address='<STR_LIT>', facility=syslog_facility)<EOL>sys_formatter = logging.Formatter(syslog_format)<EOL>sys_handler.setFormatter(sys_formatter)<EOL>logger.addHandler(sys_handler)<EOL>logger.setLevel(logging.DEBUG)<EOL><DEDENT>else:<EOL><INDENT>syslog.warning(<EOL>'<STR_LIT>' %<EOL>(inspect.stack()[<NUM_LIT:0>][<NUM_LIT:3>], str(log_mode))<EOL>)<EOL>ex = Exception(<EOL>'<STR_LIT>' %<EOL>(inspect.stack()[<NUM_LIT:0>][<NUM_LIT:3>], str(log_mode))<EOL>)<EOL>raise ex<EOL><DEDENT><DEDENT><DEDENT>except OSError as e:<EOL><INDENT>raise e<EOL><DEDENT>return logger<EOL>
Summary:
    custom format logger

Args:
    mode (str):  The Logger module supprts the following log modes:

        - log to console / stdout. Log_mode = 'stream'
        - log to file
        - log to system logger (syslog)

Returns:
    logger object | TYPE: logging