source: loggingpy/tudelft_utilities_logging/ReportToLogger.py@ 734

Last change on this file since 734 was 207, checked in by wouter, 4 years ago

#87 trying to work around the python library namespaces

File size: 1.2 KB
Line 
1from logging import Logger
2import logging
3from typing import cast
4
5from tudelft_utilities_logging.Reporter import Reporter
6
7
8# initialize the logging, otherwise it seems not to work properly
9logging.basicConfig()
10
11class ReportToLogger ( Reporter ):
12 '''
13 dumps the reported messages into a log file with the
14 given name.
15 This really tries hard to avoid any writing to
16 stdout/stderr, because those are used
17 for the communicatino to the party.
18 '''
19
20 def __init__(self, logname:str):
21 '''
22 @param logname the name for the Logger
23 '''
24 self._logger:Logger = logging.getLogger(logname)
25 # HACK to remove parent. Parent prints to stdout and
26 # preventing that is exactly why we have a logger here.
27 self._logger.parent=cast(Logger, None)
28 handler = logging.FileHandler(logname+".log")
29 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
30 handler.setFormatter(formatter)
31 self._logger.addHandler(handler)
32 self._logger.setLevel(logging.INFO)
33
34 def log(self, level:int , msg:str, thrown: BaseException=None) -> None:
35 # We use the internal function, the only way to include our exception...
36 self._logger._log(level=level, msg=msg, args=[], exc_info=thrown,\
37 stack_info=True if thrown else False)
38
39
40
Note: See TracBrowser for help on using the repository browser.