Source code for pyfem.util.logger

################################################################################
#  This Python file is part of PyFEM, the code that accompanies the book:      #
#                                                                              #
#    'Non-Linear Finite Element Analysis of Solids and Structures'             #
#    R. de Borst, M.A. Crisfield, J.J.C. Remmers and C.V. Verhoosel            #
#    John Wiley and Sons, 2012, ISBN 978-0470666449                            #
#                                                                              #
#  Copyright (C) 2011-2025. The code is written in 2011-2012 by                #
#  Joris J.C. Remmers, Clemens V. Verhoosel and Rene de Borst and since        #
#  then augmented and maintained by Joris J.C. Remmers.                        #
#  All rights reserved.                                                        #
#                                                                              #
#  A github repository, with the most up to date version of the code,          #
#  can be found here:                                                          #
#     https://github.com/jjcremmers/PyFEM/                                     #
#     https://pyfem.readthedocs.io/                                            #	
#                                                                              #
#  The original code can be downloaded from the web-site:                      #
#     http://www.wiley.com/go/deborst                                          #
#                                                                              #
#  The code is open source and intended for educational and scientific         #
#  purposes only. If you use PyFEM in your research, the developers would      #
#  be grateful if you could cite the book.                                     #    
#                                                                              #
#  Disclaimer:                                                                 #
#  The authors reserve all rights but do not guarantee that the code is        #
#  free from errors. Furthermore, the authors shall not be liable in any       #
#  event caused by the use of the program.                                     #
################################################################################

import logging


[docs] def setLogger( props : dict ): """ Creates a logger for the current analysis with a given format and level. Args: props(dict): A dictionary containing the input file of the problem. Returns: logger: an instance of the logger. """ level = "normal" # Default to INFO level level = getattr(getattr(props, "logger", None), "level", "info") if level not in ["normal", "info", "debug", "critical", "warning", "silent"]: raise NotImplementedError( 'Logger level should be "normal", "info", "debug", "critical", "silent" or "warning"' ) logger = logging.getLogger() # root logger logger.propagate = False # avoid duplicates via parent loggers # Only add a handler if none exists if not logger.handlers: handler = logging.StreamHandler() # Configure formatter and level if level == "debug": formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s') logger.setLevel(logging.DEBUG) elif level in ["critical", "silent"]: formatter = logging.Formatter(' %(message)s') logger.setLevel(logging.CRITICAL) elif level == "warning": formatter = logging.Formatter(' %(message)s') logger.setLevel(logging.WARNING) else: formatter = logging.Formatter(' %(message)s') logger.setLevel(logging.INFO) handler.setFormatter(formatter) logger.addHandler(handler) return logger
[docs] def getLogger(): """ Function that returns an instance of the active logger. Args: None Returnslogger: an instance of the active logger. """ return logging.getLogger()