6
6
from pathlib import Path
7
7
8
8
from pretty_verbose .constants import colors
9
- from pretty_verbose import RunningError , LoggerErrorBase
9
+ from pretty_verbose import RunningError , LoggerErrorBase , MissingLogFolderError
10
10
11
11
12
12
class VerboseMessages :
@@ -66,11 +66,9 @@ def __init__(
66
66
67
67
# No save flag.
68
68
self .no_save = no_save
69
- if self .no_save :
70
- return
71
-
72
- # Init the log DataFrame.
73
- self .start_log (overwrite )
69
+ if not self .no_save :
70
+ # Init the log DataFrame.
71
+ self .start_log (overwrite )
74
72
75
73
def start_log (self , overwrite ):
76
74
"""
@@ -85,6 +83,24 @@ def start_log(self, overwrite):
85
83
Flag indicating whether overwrite or not the log file.
86
84
87
85
"""
86
+ # Check if the directory exists.
87
+ if not self .filename .parent .exists ():
88
+ no_save , self .no_save = self .no_save , True
89
+ p_folder = self .filename .parent
90
+ self .warning (
91
+ f"The log dir '{ p_folder } ' does not exist!"
92
+ )
93
+
94
+ if self .confirm ("Do you want to create it?" ):
95
+ self .filename .parent .mkdir (parents = True )
96
+ self .no_save = no_save
97
+ else :
98
+ self .error (
99
+ f"Logger folder '{ p_folder } ' does not exist" ,
100
+ "exiting program..." ,
101
+ err_class = MissingLogFolderError
102
+ )
103
+
88
104
if not self .filename .exists () or overwrite :
89
105
with open (
90
106
self .filename , "w" , newline = "" , encoding = "utf-8"
@@ -94,7 +110,7 @@ def start_log(self, overwrite):
94
110
["message_type" , "n_datetime" , "message" ]
95
111
)
96
112
97
- def add_message (self , message_type , right_now , message ):
113
+ def __add_message (self , message_type , right_now , message ):
98
114
"""
99
115
Add a new row to the log.
100
116
@@ -110,8 +126,6 @@ def add_message(self, message_type, right_now, message):
110
126
Message text.
111
127
112
128
"""
113
- if self .no_save :
114
- return
115
129
with open (self .filename , "a" , newline = "" , encoding = "utf-8" ) as file :
116
130
log_messages = csv .writer (file , delimiter = self .sep )
117
131
log_messages .writerow ([message_type , right_now , message ])
@@ -177,7 +191,8 @@ def get_terminal_columns(self):
177
191
return 80
178
192
179
193
def log (
180
- self , min_level , name , color , * message , decorator = " " , end = "\n "
194
+ self , min_level , name , color , * message , decorator = " " , end = "\n " ,
195
+ skip_save = False
181
196
):
182
197
"""
183
198
Print a log message with name, color and decorator.
@@ -202,6 +217,9 @@ def log(
202
217
end: Str. Default: "\n ".
203
218
End of the line for the printing.
204
219
220
+ skip_save: Bool. Default: False.
221
+ Skip saving the log to a file.
222
+
205
223
"""
206
224
if self .level >= min_level :
207
225
# Get time in the given color.
@@ -218,8 +236,11 @@ def log(
218
236
end = end
219
237
)
220
238
239
+ if self .no_save or skip_save :
240
+ return
241
+
221
242
# Add message to log file.
222
- self .add_message (name , now , f"{ message } " )
243
+ self .__add_message (name , now , f"{ message } " )
223
244
224
245
def error (self , * message , err_id = 0 , err_str = "" , err_class = None ):
225
246
"""
0 commit comments