oasislmf.utils.log_config

Classes

OasisLogConfig

Configuration handler for OasisLMF CLI/console logging.

Module Contents

class oasislmf.utils.log_config.OasisLogConfig(config: Dict[str, Any] | None = None)[source]

Configuration handler for OasisLMF CLI/console logging.

Handles log level resolution, format management, and validation for CLI-based logging. Designed to work alongside existing file-based logging in log.py.

Environment Variables:

OASISLMF_LOG_LEVEL: Override log level (e.g., ‘DEBUG’, ‘INFO’, ‘WARNING’, ‘ERROR’, ‘CRITICAL’)

Example:
>>> # Basic usage with config file
>>> config = OasisLogConfig({'logging': {'level': 'INFO', 'format': 'compact'}})
>>> formatter = config.create_formatter()
>>> level = config.get_log_level()
>>> # CLI override example
>>> level = config.get_log_level('DEBUG')  # Override config file
>>> available_formats = config.get_available_formats()
>>> available_levels = config.get_available_levels()
STANDARD_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'][source]
FORMAT_TEMPLATES[source]
DATE_FORMATS[source]
config[source]
get_log_level(cli_level: str | None = None, is_verbose: bool = False) int[source]

Get effective log level from various sources.

Priority order: CLI args > env vars > config file > verbose flag > default

Args:

cli_level: Log level from command line (e.g., ‘INFO’, ‘DEBUG’) is_verbose: Legacy verbose flag for backward compatibility

Returns:

Numeric log level (e.g., 20 for INFO, 10 for DEBUG)

Examples:
>>> config = OasisLogConfig()
>>> config.get_log_level('DEBUG')
10
>>> config.get_log_level(is_verbose=True)
10
get_ods_tools_level(main_level: int) int[source]

Get ods_tools logger level based on main logger level.

Args:

main_level: Main oasislmf logger level to use as reference

Returns:

Numeric log level for ods_tools logger

get_format_string(format_name: str | None = None) str[source]

Get log format string.

Args:

format_name: Format template name from CLI or None for config/default

Returns:

Format string for logging.Formatter

get_date_format(format_name: str | None = None) str | None[source]

Get date format string for the specified template.

Args:

format_name: Format template name

Returns:

Date format string or None for logging default

create_formatter(format_name: str | None = None) logging.Formatter[source]

Create a logging formatter with appropriate format and date format.

Args:

format_name: Format template name from CLI

Returns:

Configured logging.Formatter instance

get_available_formats() List[str][source]

Get list of available format template names.

Returns:

List of format template names that can be used with get_format_string()

Example:
>>> config = OasisLogConfig()
>>> formats = config.get_available_formats()
>>> 'standard' in formats
True
get_available_levels() List[str][source]

Get list of available log level names.

Returns:

List of standard log level names that can be used with get_log_level()

Example:
>>> config = OasisLogConfig()
>>> levels = config.get_available_levels()
>>> 'DEBUG' in levels
True
validate_config() List[str][source]

Validate logging configuration and return any issues.

Returns:

List of warning messages about configuration issues