Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_TradingCompetition2022-main/logger/Logger.py
5925 views
1
from os.path import exists
2
import csv
3
from datetime import datetime
4
from dataclasses import dataclass
5
import configparser
6
7
8
@dataclass(eq=False, repr=True)
9
class LogData:
10
event_id: str
11
key: str
12
value: str
13
datetime: datetime = datetime.now()
14
15
16
class Logger:
17
""" Class for logger """
18
""" ToDo Change log from CSV into DB"""
19
20
log_line_dict = dict(datetime=datetime.now(), msg="")
21
22
def __init__(self, conf_name_print_mode):
23
self._file_name = None
24
self._log_storage = list()
25
self._header = ["event_id", "datetime", "key", "value"]
26
self._print_mode = None
27
self._config = configparser.ConfigParser()
28
self._config.read('config.ini')
29
self._print_mode = True if self._config.get(section='main', option=conf_name_print_mode) == 'True' else False
30
31
@property
32
def print_mode(self):
33
return self._print_mode
34
35
@print_mode.setter
36
def print_mode(self, mode):
37
self._print_mode = mode
38
39
@property
40
def file_name(self):
41
return self._file_name
42
43
@file_name.setter
44
def file_name(self, file_name):
45
self._file_name = "logger/log_result/" + file_name + '.csv'
46
if not exists(self._file_name):
47
self.create_csv_file()
48
49
def create_csv_file(self):
50
51
with open(self._file_name, 'w', encoding='UTF8', newline='') as file:
52
# writer = csv.DictWriter(file,delimiter=";")
53
writer = csv.DictWriter(file, fieldnames=self._header)
54
writer.writeheader()
55
56
def save_log(self, log_line_dict: LogData):
57
# Convert data
58
with open(self._file_name, 'a', encoding='UTF8', newline='') as file:
59
writer = csv.DictWriter(file, fieldnames=self._header)
60
writer.writerow({'event_id': log_line_dict.event_id, 'key': log_line_dict.key,
61
'value': log_line_dict.value, 'datetime': log_line_dict.datetime})
62
63
def add_log(self, log_line_dict: LogData):
64
log_line_dict.datetime = datetime.today().now()
65
if self._print_mode:
66
# ToDo
67
self._print_start()
68
print(log_line_dict)
69
self._print_end()
70
self._log_storage.append(log_line_dict)
71
self.save_log(log_line_dict)
72
73
@staticmethod
74
def _print_start():
75
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
76
77
@staticmethod
78
def _print_end():
79
print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
80
81