Source code for goalie.log
"""
Loggers for Goalie.
Code mostly copied from `the Thetis project
<https://thetisproject.org>`__.
"""
import logging
from logging import DEBUG, ERROR, WARNING
import firedrake
__all__ = [
"logger",
"output_logger",
"debug",
"info",
"warning",
"error",
"critical",
"pyrint",
"set_log_level",
"DEBUG",
"WARNING",
"ERROR",
]
def get_new_logger(name, fmt="%(levelname)s %(message)s"):
"""
:arg name: the name for the logger
:type name: :class:`str`
:kwarg fmt: format string to use
:type fmt: :class:`str`
:returns: logger instance
:rtype: :class:`logging.StreamHandler`
"""
logger = logging.getLogger(name)
for handler in logger.handlers:
logger.removeHandler(handler)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(fmt))
if firedrake.COMM_WORLD.rank != 0:
handler = logging.NullHandler()
logger.addHandler(handler)
return logger
logger = get_new_logger("goalie")
logger.setLevel(logging.WARNING)
log = logger.log
debug = logger.debug
info = logger.info
warning = logger.warning
error = logger.error
critical = logger.critical
output_logger = get_new_logger("goalie_output", fmt="%(message)s")
output_logger.setLevel(logging.INFO)
pyrint = output_logger.info
[docs]
def set_log_level(level):
firedrake.set_log_level(level)
logger.setLevel(level)