1#!/usr/bin/env python3
2
3# Copyright (c) 2019 - 2020 Nordic Semiconductor ASA
4# Copyright (c) 2019 Linaro Limited
5# Copyright (c) 2024 SILA Embedded Solutions GmbH
6
7import logging
8import sys
9
10
11class LogFormatter(logging.Formatter):
12    '''A log formatter that prints the level name in lower case,
13    for compatibility with earlier versions of edtlib.'''
14
15    def __init__(self):
16        super().__init__(fmt='%(levelnamelower)s: %(message)s')
17
18    def format(self, record):
19        record.levelnamelower = record.levelname.lower()
20        return super().format(record)
21
22
23def setup_edtlib_logging() -> None:
24    # The edtlib module emits logs using the standard 'logging' module.
25    # Configure it so that warnings and above are printed to stderr,
26    # using the LogFormatter class defined above to format each message.
27
28    handler = logging.StreamHandler(sys.stderr)
29    handler.setFormatter(LogFormatter())
30
31    logger = logging.getLogger('edtlib')
32    logger.setLevel(logging.WARNING)
33    logger.addHandler(handler)
34