Skip to content

Commit 5f45aed

Browse files
committed
Fix: Ensure verbose flag in YAML sets logging to DEBUG mode
- Updated `merge_configs` method to explicitly handle the `verbose` flag from YAML configuration - Added `update_logging_level` method to `LoggingConfig` class to update logging levels for all loggers and handlers - Modified `main` function to use the new method for updating logging levels - Ensured `DEBUG` level messages are directed to file handlers while console handler remains at `INFO` level - Updated the input YAML file template to make sure they correctly match up to the arguments in argsparse
1 parent 1f21ee2 commit 5f45aed

File tree

3 files changed

+46
-24
lines changed

3 files changed

+46
-24
lines changed

CodeEntropy/config/logging_config.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
class LoggingConfig:
7-
def __init__(self, folder, default_level=logging.INFO):
7+
def __init__(self, folder, log_level=logging.INFO):
88
log_directory = os.path.join(folder, "logs")
99
os.makedirs(log_directory, exist_ok=True)
1010

@@ -26,52 +26,52 @@ def __init__(self, folder, default_level=logging.INFO):
2626
"console": {
2727
"class": "logging.StreamHandler",
2828
"formatter": "simple",
29-
"level": "INFO",
29+
"level": logging.INFO,
3030
},
3131
"stdout": {
3232
"class": "logging.FileHandler",
3333
"filename": os.path.join(log_directory, "program.out"),
3434
"formatter": "simple",
35-
"level": "INFO",
35+
"level": logging.INFO,
3636
},
3737
"logfile": {
3838
"class": "logging.FileHandler",
3939
"filename": os.path.join(log_directory, "program.log"),
4040
"formatter": "detailed",
41-
"level": "DEBUG",
41+
"level": logging.DEBUG,
4242
},
4343
"errorfile": {
4444
"class": "logging.FileHandler",
4545
"filename": os.path.join(log_directory, "program.err"),
4646
"formatter": "detailed",
47-
"level": "ERROR",
47+
"level": logging.ERROR,
4848
},
4949
"commandfile": {
5050
"class": "logging.FileHandler",
5151
"filename": os.path.join(log_directory, "program.com"),
5252
"formatter": "simple",
53-
"level": "INFO",
53+
"level": logging.INFO,
5454
},
5555
"mdanalysis_log": {
5656
"class": "logging.FileHandler",
5757
"filename": os.path.join(log_directory, "mdanalysis.log"),
5858
"formatter": "detailed",
59-
"level": "DEBUG",
59+
"level": logging.DEBUG,
6060
},
6161
},
6262
"loggers": {
6363
"": {
6464
"handlers": ["console", "stdout", "logfile", "errorfile"],
65-
"level": default_level,
65+
"level": log_level,
6666
},
6767
"MDAnalysis": {
6868
"handlers": ["mdanalysis_log"],
69-
"level": "DEBUG",
69+
"level": logging.DEBUG,
7070
"propagate": False,
7171
},
7272
"commands": {
7373
"handlers": ["commandfile"],
74-
"level": "INFO",
74+
"level": logging.INFO,
7575
"propagate": False,
7676
},
7777
},
@@ -82,3 +82,23 @@ def setup_logging(self):
8282
logging.getLogger("MDAnalysis")
8383
logging.getLogger("commands")
8484
return logging.getLogger(__name__)
85+
86+
def update_logging_level(self, log_level):
87+
# Update the root logger level
88+
root_logger = logging.getLogger()
89+
root_logger.setLevel(log_level)
90+
for handler in root_logger.handlers:
91+
if isinstance(handler, logging.FileHandler):
92+
handler.setLevel(logging.DEBUG)
93+
else:
94+
handler.setLevel(logging.INFO)
95+
96+
# Update all other loggers and their handlers
97+
for logger_name in self.LOGGING["loggers"]:
98+
logger = logging.getLogger(logger_name)
99+
logger.setLevel(log_level)
100+
for handler in logger.handlers:
101+
if isinstance(handler, logging.FileHandler):
102+
handler.setLevel(logging.DEBUG)
103+
else:
104+
handler.setLevel(logging.INFO)

CodeEntropy/main_mcc.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,24 +67,27 @@ def main():
6767
args, unknown = parser.parse_known_args()
6868
args.outfile = os.path.join(folder, args.outfile)
6969

70-
# Determine logging level
71-
log_level = logging.DEBUG if args.verbose else logging.INFO
72-
73-
# Initialize the logging system with the determined log level
74-
logging_config = LoggingConfig(folder, default_level=log_level)
75-
logger = logging_config.setup_logging()
76-
77-
# Capture and log the command-line invocation
78-
command = " ".join(sys.argv)
79-
logging.getLogger("commands").info(command)
80-
8170
try:
71+
# Initialize the logging system once
72+
logging_config = LoggingConfig(folder)
73+
logger = logging_config.setup_logging()
74+
8275
# Process each run in the YAML configuration
8376
for run_name, run_config in config.items():
8477
if isinstance(run_config, dict):
8578
# Merging CLI arguments with YAML configuration
8679
args = arg_config.merge_configs(args, run_config)
8780

81+
# Determine logging level
82+
log_level = logging.DEBUG if args.verbose else logging.INFO
83+
84+
# Update the logging level
85+
logging_config.update_logging_level(log_level)
86+
87+
# Capture and log the command-line invocation
88+
command = " ".join(sys.argv)
89+
logging.getLogger("commands").info(command)
90+
8891
# Ensure necessary arguments are provided
8992
if not getattr(args, "top_traj_file"):
9093
raise ValueError(

config.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ run1:
77
end:
88
step:
99
bin_width:
10-
tempra:
10+
temperature:
1111
verbose:
1212
thread:
1313
outfile:
14-
resfile:
1514
mout:
1615
force_partitioning:
17-
waterEntropy:
16+
waterEntropy:

0 commit comments

Comments
 (0)