Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_TradingCompetition2022-main/logger/TechLogger.py
5925 views
1
from logger.Logger import Logger, LogData
2
from datetime import datetime
3
4
5
class TechLogger(Logger):
6
"""
7
Singleton Class for tech logger
8
Collect all tech event
9
"""
10
11
_LOGGER_INSTANCE = None
12
13
__BEFORE_METHOD = "BEFORE_METHOD"
14
__AFTER_METHOD = "AFTER_METHOD"
15
__METHOD_NAME = "METHOD_NAME"
16
__INPUT_ARGS = 'INPUT_ARGS'
17
__INPUT_KWARGS = 'INPUT_KWARGS'
18
19
@classmethod
20
def get_logger_instance(cls):
21
if cls._LOGGER_INSTANCE is None:
22
cls._LOGGER_INSTANCE = TechLogger()
23
return cls._LOGGER_INSTANCE
24
25
def __init__(self, conf_name_print_mode=None):
26
if conf_name_print_mode is None:
27
conf_name_print_mode = 'print_tech_log'
28
super().__init__(conf_name_print_mode)
29
30
def log_before_method(self, fn, *args, **kwargs):
31
""" Before method started"""
32
self.add_log(log_line_dict=LogData(event_id=self.__BEFORE_METHOD,
33
datetime=datetime.today().now(),
34
key=self.__METHOD_NAME, value=fn))
35
for i in args:
36
self.add_log(log_line_dict=LogData(event_id=self.__BEFORE_METHOD,
37
datetime=datetime.today().now(),
38
key=self.__INPUT_ARGS, value=str(i)))
39
for i in kwargs:
40
self.add_log(log_line_dict=LogData(event_id=self.__BEFORE_METHOD,
41
datetime=datetime.today().now(),
42
key=i, value=str(kwargs[i])))
43
44
def log_after_method(self, fn):
45
""" After method started"""
46
self.add_log(log_line_dict=LogData(event_id=self.__AFTER_METHOD,
47
datetime=datetime.today().now(),
48
key=self.__METHOD_NAME, value=fn))
49
50
def add_except(self, except_obj):
51
log_data = LogData(event_id='EXCEPT', key=except_obj.code, value=except_obj, datetime=datetime.now())
52
self.add_log(log_data)
53
54