Skip to content

Commit

Permalink
Rename e2c_logger to _logger and make INFO default level
Browse files Browse the repository at this point in the history
  • Loading branch information
tomvothecoder committed Oct 16, 2024
1 parent 7798ca7 commit 35dae44
Show file tree
Hide file tree
Showing 52 changed files with 163 additions and 361 deletions.
16 changes: 5 additions & 11 deletions e3sm_to_cmip/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,33 +21,28 @@
import yaml
from tqdm import tqdm

from e3sm_to_cmip import ROOT_HANDLERS_DIR, __version__, resources
from datetime import datetime, timezone

from e3sm_to_cmip import _logger

from e3sm_to_cmip import ROOT_HANDLERS_DIR, __version__, _logger, resources
from e3sm_to_cmip.cmor_handlers.handler import instantiate_handler_logger
from e3sm_to_cmip.cmor_handlers.utils import (
instantiate_h_utils_logger,
MPAS_REALMS,
REALMS,
Frequency,
MPASRealm,
Realm,
_get_mpas_handlers,
derive_handlers,
instantiate_h_utils_logger,
load_all_handlers,
)
from e3sm_to_cmip.cmor_handlers.handler import instantiate_handler_logger

from e3sm_to_cmip.util import (
instantiate_util_logger,
FREQUENCIES,
_get_table_info,
add_metadata,
copy_user_metadata,
find_atm_files,
find_mpas_files,
get_handler_info_msg,
instantiate_util_logger,
precheck,
print_debug,
print_message,
Expand Down Expand Up @@ -111,7 +106,7 @@ def __init__(self, args: Optional[List[str]] = None):

# Setup this module's logger AFTER args are parsed in __init__, so that
# default log file is NOT created for "--help" or "--version" calls.
logger = _logger.e2c_logger(name=__name__, log_level=_logger.INFO, to_logfile=True)
logger = _logger._logger(name=__name__, to_logfile=True)

# NOTE: The order of these attributes align with class CLIArguments.
# ======================================================================
Expand Down Expand Up @@ -974,7 +969,6 @@ def _timeout_exit(self):


def main(args: Optional[List[str]] = None):

app = E3SMtoCMIP(args)

# These calls allow module loggers that create default logfiles to avoid being
Expand Down
71 changes: 32 additions & 39 deletions e3sm_to_cmip/_logger.py
Original file line number Diff line number Diff line change
@@ -1,77 +1,70 @@
from __future__ import annotations

import logging
import os
from datetime import datetime, timezone


DEBUG = logging.DEBUG
INFO = logging.INFO
WARNING = logging.WARNING
ERROR = logging.ERROR
CRITICAL = logging.CRITICAL

DEFAULT_LOG_LEVEL = logging.DEBUG
DEFAULT_LOG_LEVEL = logging.INFO
DEFAULT_LOG_DIR = "e2c_logs"
DEFAULT_LOG = f"{DEFAULT_LOG_DIR}/e2c_root_log-{datetime.now(timezone.utc).strftime('%Y%m%d_%H%M%S_%f')}.log"
DEFAULT_LOGPATH = f"{DEFAULT_LOG_DIR}/e2c_root_log-{datetime.now(timezone.utc).strftime('%Y%m%d_%H%M%S_%f')}.log"

# Logger message and date formats.
MSGFMT = "%(asctime)s_%(msecs)03d:%(levelname)s:%(name)s:%(funcName)s:%(message)s"
DATEFMT = "%Y%m%d_%H%M%S"


def e2c_logger(
name=None,
logfilename=DEFAULT_LOG,
log_level=None,
to_console=False,
to_logfile=False,
propagate=False,
def _logger(
name: str | None = None,
log_filename: str = DEFAULT_LOGPATH,
log_level: int = DEFAULT_LOG_LEVEL,
to_console: bool = False,
to_logfile: bool = False,
propagate: bool = False,
):
"""Return a root or named logger with variable configuration.
Parameters
----------
name : str
name : str | None
The name displayed for the logger in messages.
If name == None or name == "__main__", the root logger is returned
logfilename : str
If logfile handling is requested, any logfile may be specified, or else
the default (e2c_logs/dflt_log-{datetime.now(timezone.utc).strftime('%Y%m%d_%H%M%S_%f')}.log) is used.
log_level : int
One of { logging.DEBUG (default), logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL }
as defined in the module "logging".
log_filename : str
If logfile handling is requested, any logfile may be specified.
log_level : LogLevel
Either logging.DEBUG (10), logging.INFO (20), logging.WARNING (30),
logging.ERROR (40), logging.CRITICAL (50), by default logging.INFO.
to_console : boolean
If True, a logging.StreamHandler is supplied. Default = False
If True, a logging.StreamHandler is supplied, by default False.
to_logfile : boolean
If True, a logging.FileHandler is supplied. Default = False.
If True, a logging.FileHandler is supplied, by default False.
propagate : boolean
If True, messages logged are propagated to the root logger. Default = False.
If True, messages logged are propagated to the root logger, by default
False.
"""
if to_logfile:
dn = os.path.dirname(logfilename)
dn = os.path.dirname(log_filename)
if len(dn) and not os.path.exists(dn):
os.makedirs(dn)

if name == None or name == "__main__":
logger = logger.root
if name is None or name == "__main__":
# FIXME: F821 Undefined name `logger`
logger = logger.root # noqa: F821
else:
logger = logging.getLogger(name)

logger.propagate = propagate

if log_level == None:
log_level = DEFAULT_LOG_LEVEL

logger.setLevel(log_level)

logger.handlers = []

msgfmt = "%(asctime)s_%(msecs)03d:%(levelname)s:%(name)s:%(funcName)s:%(message)s"
datefmt = "%Y%m%d_%H%M%S"

if to_console:
logStreamHandler = logging.StreamHandler()
logStreamHandler.setFormatter(logging.Formatter(msgfmt, datefmt=datefmt))
logStreamHandler.setFormatter(logging.Formatter(MSGFMT, datefmt=DATEFMT))
logger.addHandler(logStreamHandler)

if to_logfile:
logFileHandler = logging.FileHandler(logfilename)
logFileHandler.setFormatter(logging.Formatter(msgfmt, datefmt=datefmt))
logFileHandler = logging.FileHandler(log_filename)
logFileHandler.setFormatter(logging.Formatter(MSGFMT, datefmt=DATEFMT))
logger.addHandler(logFileHandler)

return logger
6 changes: 4 additions & 2 deletions e3sm_to_cmip/cmor_handlers/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@
import xcdat as xc
import yaml

from e3sm_to_cmip import _logger
from e3sm_to_cmip.cmor_handlers import FILL_VALUE, _formulas
from e3sm_to_cmip.util import _get_table_for_non_monthly_freq
from e3sm_to_cmip import _logger


def instantiate_handler_logger():
global logger

logger = _logger.e2c_logger(name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=True)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=True)


# The names for valid hybrid sigma levels.
HYBRID_SIGMA_LEVEL_NAMES = [
Expand Down
9 changes: 2 additions & 7 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/areacello.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@
"""

import xarray
from e3sm_to_cmip import _logger

import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -18,9 +15,7 @@
VAR_UNITS = "m2"
TABLE = "CMIP6_Ofx.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
9 changes: 2 additions & 7 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/fsitherm.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
from __future__ import absolute_import, division, print_function

import xarray
from e3sm_to_cmip import _logger

import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -20,9 +17,7 @@
VAR_UNITS = "kg m-2 s-1"
TABLE = "CMIP6_Omon.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
9 changes: 2 additions & 7 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/hfds.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
from __future__ import absolute_import, division, print_function

import xarray
from e3sm_to_cmip import _logger

import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -20,9 +17,7 @@
VAR_UNITS = "W m-2"
TABLE = "CMIP6_Omon.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
9 changes: 2 additions & 7 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/hfsifrazil.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
from __future__ import absolute_import, division, print_function

import xarray
from e3sm_to_cmip import _logger

import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -20,9 +17,7 @@
VAR_UNITS = "W m-2"
TABLE = "CMIP6_Omon.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
8 changes: 2 additions & 6 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/masscello.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@

from __future__ import absolute_import, division, print_function

import xarray
from e3sm_to_cmip import _logger
import netCDF4
import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -20,9 +18,7 @@
VAR_UNITS = "kg m-2"
TABLE = "CMIP6_Omon.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
9 changes: 2 additions & 7 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/masso.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
from __future__ import absolute_import, division, print_function

import xarray
from e3sm_to_cmip import _logger

import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -20,9 +17,7 @@
VAR_UNITS = "kg"
TABLE = "CMIP6_Omon.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
9 changes: 2 additions & 7 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/mlotst.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
from __future__ import absolute_import, division, print_function

import xarray
from e3sm_to_cmip import _logger

import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -20,9 +17,7 @@
VAR_UNITS = "m"
TABLE = "CMIP6_Omon.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
9 changes: 2 additions & 7 deletions e3sm_to_cmip/cmor_handlers/mpas_vars/msftmz.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
from __future__ import absolute_import, division, print_function

import xarray
from e3sm_to_cmip import _logger

import xarray

from e3sm_to_cmip import mpas, util
from e3sm_to_cmip import _logger, mpas, util
from e3sm_to_cmip.util import print_message

# 'MPAS' as a placeholder for raw variables needed
Expand All @@ -20,9 +17,7 @@
VAR_UNITS = "kg s-1"
TABLE = "CMIP6_Omon.json"

logger = _logger.e2c_logger(
name=__name__, log_level=_logger.INFO, to_logfile=True, propagate=False
)
logger = _logger._logger(name=__name__, to_logfile=True, propagate=False)


def handle(infiles, tables, user_input_path, **kwargs):
Expand Down
Loading

0 comments on commit 35dae44

Please sign in to comment.