Skip to content

Instantly share code, notes, and snippets.

@caglartoklu
Created November 22, 2015 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save caglartoklu/520c14ff489638103b9a to your computer and use it in GitHub Desktop.
Save caglartoklu/520c14ff489638103b9a to your computer and use it in GitHub Desktop.
Single function #logging #python
def get_logger():
"""
Returns a logger object that can directly be used.
It is a single function singleton,
it returns the same object each time it is called.
Do not forget to change:
logger_name = "defaultlogger"
logger_file_path = "log1.log"
Example:
import logging
logger = get_logger()
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
"""
logger_name = "defaultlogger"
logger_file_path = "log1.log"
if not hasattr(get_logger, "static_logger_instance"):
# In Python, each function is an object.
# That means, get_logger is an object.
# This part of the code adds a member to the object
# if it does not exist yet.
get_logger.static_logger_instance = None
logger = None
if get_logger.static_logger_instance == None:
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
# the logger to write to screen.
logger_stream_handler = logging.StreamHandler()
# the logger to write to file.
logger_file_handler = logging.FileHandler(logger_file_path)
logger_format = "%(levelname)s %(asctime)s "
logger_format = logger_format + "%(funcName)s %(lineno)d %(message)s"
logger_formatter = logging.Formatter(logger_format)
logger_stream_handler.setFormatter(logger_formatter)
logger_file_handler.setFormatter(logger_formatter)
logger.addHandler(logger_stream_handler)
logger.addHandler(logger_file_handler)
get_logger.static_logger_instance = logger
else:
# returns the previous logger that has been already declared.
logger = get_logger.static_logger_instance
return logger
if __name__ == '__main__':
import logging
logger = get_logger()
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment