From 04804e6edc13fd4cfcba898767919ae9f187842b Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 28 Apr 2021 14:28:21 +0200 Subject: Corrected error handling for log creation. --- .gitignore | 1 + archinstall/lib/output.py | 31 ++++++++++++++----------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index a21815d6..00f42d12 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ SAFETY_LOCK **/test.py **/archiso /guided.py +/install.log diff --git a/archinstall/lib/output.py b/archinstall/lib/output.py index 6a294f40..872de3d0 100644 --- a/archinstall/lib/output.py +++ b/archinstall/lib/output.py @@ -103,30 +103,27 @@ def log(*args, **kwargs): kwargs = {'fg': 'white', **kwargs} string = stylize_output(string, **kwargs) - # If a logfile is defined in storage, + # If a logfile is defined in storage, # we use that one to output everything if (filename := storage.get('LOG_FILE', None)): absolute_logfile = os.path.join(storage.get('LOG_PATH', './'), filename) - if not os.path.isfile(absolute_logfile): - try: - Path(absolute_logfile).parents[0].mkdir(exist_ok=True, parents=True) - with open(absolute_logfile, 'a') as log_file: - log_file.write("") - except PermissionError: - # Fallback to creating the log file in the current folder - err_string = f"Not enough permission to place log file at {absolute_logfile}, creating it in {Path('./').absolute()/filename} instead." - absolute_logfile = Path('./').absolute()/filename - absolute_logfile.parents[0].mkdir(exist_ok=True) - absolute_logfile = str(absolute_logfile) - storage['LOG_PATH'] = './' - log(err_string, fg="red") - - Path(absolute_logfile).touch() # Overkill? + + try: + Path(absolute_logfile).parents[0].mkdir(exist_ok=True, parents=True) + with open(absolute_logfile, 'a') as log_file: + log_file.write("") + except PermissionError: + # Fallback to creating the log file in the current folder + err_string = f"Not enough permission to place log file at {absolute_logfile}, creating it in {Path('./').absolute()/filename} instead." + absolute_logfile = Path('./').absolute()/filename + absolute_logfile.parents[0].mkdir(exist_ok=True) + absolute_logfile = str(absolute_logfile) + storage['LOG_PATH'] = './' + log(err_string, fg="red") with open(absolute_logfile, 'a') as log_file: log_file.write(f"{orig_string}\n") - # If we assigned a level, try to log it to systemd's journald. # Unless the level is higher than we've decided to output interactively. # (Remember, log files still get *ALL* the output despite level restrictions) -- cgit v1.2.3-70-g09d2