Hierarchical logging in yaml format.
Hierarchical logging help to group logs that are related to the same code flow.
Log style can be styled in Yaml format or in Line format.
Examples:
Output in YAML style
from nrt_logging.logger import NrtLogger
from nrt_logging.logger_manager import logger_manager
from nrt_logging.logger_stream_handlers import ManualDepthEnum
NAME_1 = 'TEST1'
NAME_2 = 'TEST2'
class Child:
__logger: NrtLogger
def __init__(self):
self.__logger = logger_manager.get_logger(NAME_1)
def child_1(self):
self.__logger.info('Child 1')
self.child_2()
def child_2(self):
self.__logger.info('Child 2')
class Parent:
MSG_1 = 'MSG_1'
MSG_2 = 'MSG_2'
MSG_3 = 'MSG_3'
INCREASE_MSG = 'INCREASE_MSG'
DECREASE_MSG = 'DECREASE_MSG'
__logger: NrtLogger
__child: Child
def __init__(self):
self.__logger = logger_manager.get_logger(NAME_1)
self.__child = Child()
def a1(self):
self.__logger.warn(self.MSG_1)
self.__child.child_1()
def a2_manual(self):
self.__logger.info(self.MSG_2)
self.__logger.increase_depth()
self.__logger.info(self.INCREASE_MSG)
self.__logger.decrease_depth()
self.__logger.info(self.DECREASE_MSG)
self.__logger.error(self.MSG_1)
self.a1()
def a3_manual(self):
self.__logger.info(self.MSG_2)
self.__logger.increase_depth()
self.__logger.info(self.INCREASE_MSG)
self.__logger.decrease_depth()
self.__logger.info(self.DECREASE_MSG)
self.__logger.error(self.MSG_3)
def a4_manual(self):
self.__logger.info(self.MSG_1)
self.__logger.info(self.INCREASE_MSG, ManualDepthEnum.INCREASE)
self.__logger.info(self.DECREASE_MSG, ManualDepthEnum.DECREASE)
self.__logger.error(self.MSG_2)
from examples.demo_classes.demo_classes import NAME_1, Parent
from nrt_logging.logger_manager import logger_manager
from nrt_logging.logger_stream_handlers import \
ConsoleStreamHandler, LogStyleEnum
def logging_style(log_style: LogStyleEnum):
sh = ConsoleStreamHandler()
sh.style = log_style
logger = logger_manager.get_logger(NAME_1)
logger.add_stream_handler(sh)
p = Parent()
p.a1()
def logging_line_style():
logging_style(LogStyleEnum.LINE)
def logging_yaml_style():
logging_style(LogStyleEnum.YAML)
logging_yaml_style()
Output
---
date: 2022-10-31 17:59:04.653084
log_level: WARN
path: demo_classes.py.Parent
method: a1
line_number: 38
message: MSG_1
children:
- date: 2022-10-31 17:59:04.655071
log_level: INFO
path: demo_classes.py.Child
method: child_1
line_number: 16
message: Child 1
children:
- date: 2022-10-31 17:59:04.656137
log_level: INFO
path: demo_classes.py.Child
method: child_2
line_number: 20
message: Child 2
Output in LINE style
- log: 2022-10-31 18:16:54.033735 [WARN] [demo_classes.py.Parent.a1:38] MSG_1
children:
- log: 2022-10-31 18:16:54.034660 [INFO] [demo_classes.py.Child.child_1:16] Child 1
children:
- log: 2022-10-31 18:16:54.036723 [INFO] [demo_classes.py.Child.child_2:20] Child 2
from nrt_logging.log_level import LogLevelEnum
from nrt_logging.logger_manager import logger_manager
from nrt_logging.logger_stream_handlers import \
ConsoleStreamHandler, LogStyleEnum
sh = ConsoleStreamHandler()
sh.log_level = LogLevelEnum.TRACE
sh.style = LogStyleEnum.LINE
logger = logger_manager.get_logger('NAME_1')
logger.add_stream_handler(sh)
logger.info('main level log')
logger.increase_depth()
logger.info('child 1')
logger.increase_depth()
logger.info('child 1_1')
logger.decrease_depth()
logger.info('child 2')
logger.decrease_depth()
logger.info('continue main level')
Output
- log: 2022-10-31 18:18:34.520544 [INFO] [manual_hierarchy_line_logging_1.py.<module>:13] main level log
children:
- log: 2022-10-31 18:18:34.522606 [INFO] [manual_hierarchy_line_logging_1.py.<module>:15] child 1
children:
- log: 2022-10-31 18:18:34.523784 [INFO] [manual_hierarchy_line_logging_1.py.<module>:17] child 1_1
- log: 2022-10-31 18:18:34.524810 [INFO] [manual_hierarchy_line_logging_1.py.<module>:19] child 2
- log: 2022-10-31 18:18:34.525864 [INFO] [manual_hierarchy_line_logging_1.py.<module>:21] continue main level
Config file
log_manager config file in YAML style.
Configure loggers and stream handlers.
parameters are inherited. Parameters that are deeper in YAML file will be taken.
log_level: WARN
date_format: '%Y-%m-%d %H:%M:%S'
loggers:
- name: TEST1
style: yaml
log_line_template: '[$log_level$] <$date$> $message$'
stream_handlers:
- type: console
style: line
- type: file
file_path: logs/log_test_1.txt
log_level: DEBUG
style: line
date_format: '%Y'
log_line_template: 'Test1 $date$ $message$'
- name: TEST2
style: yaml
stream_handlers:
- type: file
file_path: logs/log_test_2.txt
log_level: ERROR
date_format: '%Y'
log_yaml_elements:
['log_level', 'date', 'message']
from nrt_logging.logger_manager import logger_manager
CONFIG_FILE_PATH = './config/config1.yaml'
logger_manager.set_config(file_path=CONFIG_FILE_PATH)
Metadata
Release files for nrt-logging 1.3.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| nrt_logging-1.3.6.tar.gz | 19.2 kB | Without provenance | Details for nrt_logging-1.3.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| nrt_logging-1.3.6-py3-none-any.whl | Python 3 | none | any | Details for nrt_logging-1.3.6-py3-none-any.whl |
Total release size: 39.0 kB
Release files / nrt_logging-1.3.6.tar.gz
| Download URL | nrt_logging-1.3.6.tar.gz |
|---|---|
| Size | 19.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f8dada7d5e1d742979476203a2301511ed5bedd7900433830c5acb48a0593c1
|
|
BLAKE2b-256 checksum How to use checksums |
658d51dbda127e3d354d2f6e2ccc03e29e6fc539392d9bfb517e6a1b8e0c2617
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.0
|
Release files / nrt_logging-1.3.6-py3-none-any.whl
| Download URL | nrt_logging-1.3.6-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77c657ee55ba354226b0910445c857678b93b3efeeb430232190293b4c13e61e
|
|
BLAKE2b-256 checksum How to use checksums |
dce34b0e566770c95da0dd580127ab77e04e4ef29e14b0e9ff66aba6086e96c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.0
|
Security for nrt-logging 1.3.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.