11import shutil
22import numpy as np
33import pandas as pd
4- from fancylog import fancylog
54import logging
5+ import json
66
77from rich .logging import RichHandler
88
99from fcutils .file_io .io import save_yaml
1010
1111
1212from proj .utils .misc import timestamp
13- from proj import paths
13+ from proj import paths , log
1414from proj .animation .animate import animate_from_images
1515from proj .plotting .results import plot_results
1616from proj .utils .dropbox import DropBoxUtils , upload_folder
1717from proj .utils .slack import send_slack_message
1818
19- FORMAT = "%(message)s"
20- logging .basicConfig (
21- level = "NOTSET" , format = FORMAT , datefmt = "[%X]" , handlers = [RichHandler ()]
22- )
23-
2419
2520class Manager :
2621 def __init__ (self , model , winstor = False ):
@@ -62,20 +57,10 @@ def __init__(self, model, winstor=False):
6257 self ._start_logging ()
6358
6459 def _start_logging (self ):
65- # Start logging
66- fancylog .start_logging (
67- output_dir = str (self .datafolder ),
68- filename = self .exp_name + ".log" ,
69- multiprocessing_aware = False ,
70- write_git = False ,
71- verbose = False ,
72- write_cli_args = False ,
73- file_log_level = "INFO" ,
74- )
75-
76- # log main folder
77- log = logging .getLogger ("rich" )
78- log .setLevel (logging .INFO )
60+ filename = str (self .datafolder / f"{ self .exp_name } .log" )
61+ fh = logging .FileHandler (filename )
62+ fh .setFormatter (RichHandler ())
63+ log .addHandler (fh )
7964
8065 log .info (
8166 f"[bold green] Saving data at: { self .datafolder } " ,
@@ -84,12 +69,8 @@ def _start_logging(self):
8469
8570 def _log_conf (self ):
8671 # log config.py
87- try :
88- with open ("proj/model/config.py" ) as f :
89- conf = "\n " + f .read ()
90- except FileNotFoundError :
91- conf = self .model .config_dict ()
92- logging .info (conf )
72+ conf = json .dumps (self .model .config_dict (), sort_keys = True , indent = 4 )
73+ log .info ("Config parameters:\n " + conf , extra = {"markup" : True })
9374
9475 def _save_results (self ):
9576 # save config
@@ -145,7 +126,9 @@ def _save_video(self):
145126 def _upload_to_dropbox (self ):
146127 dbx = DropBoxUtils ()
147128 dpx_path = self .datafolder .name
148- logging .info (f"Uploading data to dropbox at: { dpx_path } " )
129+ log .info (
130+ f"Uploading data to dropbox at: { dpx_path } " , extra = {"markup" : True }
131+ )
149132
150133 upload_folder (dbx , self .datafolder , dpx_path )
151134
@@ -170,13 +153,13 @@ def conclude(self):
170153
171154 # Upload results to dropbox
172155 if self .winstor :
173- logging .info ("Uploading to dropbox" )
156+ log .info ("Uploading to dropbox" , extra = { "markup" : True } )
174157 try :
175158 self ._upload_to_dropbox ()
176159 except Exception as e :
177160 logging .error (f"Failed to upload to dropbox: { e } " )
178161
179- logging .info ("Sending slack message" )
162+ log .info ("Sending slack message" , extra = { "markup" : True } )
180163 send_slack_message (
181164 f"""
182165 \n
@@ -187,10 +170,10 @@ def conclude(self):
187170 """
188171 )
189172 else :
190- logging .info ("Did not upload to dropbox" )
173+ log .info ("Did not upload to dropbox" , extra = { "markup" : True } )
191174
192175 def failed (self ):
193- logging .info ("Sending slack FAILED message" )
176+ log .info ("Sending slack FAILED message" , extra = { "markup" : True } )
194177 if self .winstor :
195178 send_slack_message (
196179 f"""
0 commit comments