@@ -42,27 +42,42 @@ All quantities are re-dimensionalized before getting outputed.
4242
4343.. code-block :: python
4444
45+ import os
4546 import logging
46- logging.basicConfig(
47- level = logging.INFO ,
48- format = ' %(message)s '
49- )
50-
51- # Create a custom logger
52- logger = logging.getLogger(' simulation_logger' )
53- logger.setLevel(logging.INFO )
54- # Disable propagation to prevent double logging
55- logger.propagate = False
56-
57- console_handler = logging.StreamHandler() # To log to the terminal
58- file_handler = logging.FileHandler(' simulation.log' ) # To log to a file
59- formatter = logging.Formatter(' %(message)s ' )
60- console_handler.setFormatter(formatter)
61- file_handler.setFormatter(formatter)
62- logger.addHandler(console_handler)
63- logger.addHandler(file_handler)
47+
48+ # Function to set up the logger
49+ def setup_logger (folder_name ):
50+ # Create a custom logger
51+ logger = logging.getLogger(' simulation_logger' )
52+ logger.setLevel(logging.INFO )
53+ logger.propagate = False # Disable propagation to prevent double logging
54+
55+ # Clear any existing handlers if this function is called again
56+ if logger.hasHandlers():
57+ logger.handlers.clear()
58+
59+ # Create handlers for console and file
60+ console_handler = logging.StreamHandler() # To log to the terminal
61+ log_file_path = os.path.join(folder_name, ' simulation.log' )
62+ file_handler = logging.FileHandler(log_file_path) # To log to a file
63+
64+ # Create formatters and add them to the handlers
65+ formatter = logging.Formatter(' %(message)s ' )
66+ console_handler.setFormatter(formatter)
67+ file_handler.setFormatter(formatter)
68+
69+ # Add handlers to the logger
70+ logger.addHandler(console_handler)
71+ logger.addHandler(file_handler)
72+
73+ return logger
6474
6575 def log_simulation_data (code ):
76+
77+ # Setup the logger with the folder name
78+ logger = setup_logger(code.data_folder)
79+
80+ # Logging the simulation data
6681 if code.thermo_period is not None :
6782 if code.step % code.thermo_period == 0 :
6883 if code.step == 0 :
@@ -83,9 +98,8 @@ All quantities are re-dimensionalized before getting outputed.
8398 logger.info(f " { code.step} { Epot:.2f } { code.MaxF:.2f } " )
8499 elif code.thermo_outputs == " Epot-press" :
85100 code.calculate_pressure()
86- press = code.pressure \
87- * code.reference_pressure # Atm
88- logger.info(f " { code.step} { Epot:.2f } { press:.2f } " )
101+ press = code.pressure * code.reference_pressure # Atm
102+ logger.info(f " { code.step} { Epot:.2f } { press:.2f } " )
89103
90104 .. label :: end_logger_class
91105
0 commit comments