Source code for elektronn3.logger

# -*- coding: utf-8 -*-
# ELEKTRONN3 - Neural Network Toolkit
#
# Copyright (c) 2017 - now
# Max Planck Institute of Neurobiology, Munich, Germany
# Authors: Martin Drawitsch, Philipp Schubert, Marius Killinger

import logging
import os
import getpass
import sys
import uuid

import colorlog


[docs] def logger_setup(): # Formats for colorlog.LevelFormatter log_level_formats = {'DEBUG': '%(log_color)s%(msg)s (%(module)s:%(lineno)d)', 'INFO': '%(log_color)s%(msg)s', 'WARNING': '%(log_color)sWARNING: %(msg)s (%(module)s:%(lineno)d)', 'ERROR': '%(log_color)sERROR: %(msg)s (%(module)s:%(lineno)d)', 'CRITICAL': '%(log_color)sCRITICAL: %(msg)s (%(module)s:%(lineno)d)',} log_colors = {'DEBUG': 'blue', 'INFO': 'cyan', 'WARNING': 'bold_yellow', 'ERROR': 'red', 'CRITICAL': 'red,bg_white'} # Initialize logger that can be used user_name = getpass.getuser() logger = logging.getLogger('elektronn3log') # Only set up the logger if it hasn't already been initialised before: if not len(logger.handlers) > 0: logger.setLevel(logging.DEBUG) lfile_formatter = logging.Formatter( '[%(asctime)s] [%(levelname)s]\t%(message)s', datefmt='%Y-%m-%d %H:%M:%S') uu = uuid.uuid4() # Temporary log file path, to be changed later. if os.path.isdir(f'/ptmp/{user_name}'): lfile_path = os.path.abspath(f'/ptmp/{user_name}/{uu}_elektronn3.log') else: lfile_path = os.path.abspath(f'/tmp/{user_name}_{uu}_elektronn3.log') lfile_level = logging.DEBUG lfile_handler = logging.FileHandler(lfile_path) lfile_handler.setLevel(lfile_level) lfile_handler.setFormatter(lfile_formatter) logger.addHandler(lfile_handler) lstream_handler = colorlog.StreamHandler(sys.stdout) lstream_handler.setFormatter( colorlog.LevelFormatter(fmt=log_level_formats, log_colors=log_colors)) # set this to logging.DEBUG to enable output for logger.debug() calls lstream_level = logging.INFO lstream_handler.setLevel(lstream_level) logger.addHandler(lstream_handler) logger.propagate = False if False: # Test log levels: logger.critical('== critical') logger.error('== error') logger.warning('== warn') logger.info('== info') logger.debug('== debug')