Use same log file for full AutoRepairs session

This commit is contained in:
2Shirt 2022-09-27 23:54:11 -07:00
parent 3b89f1eabc
commit cafdf42a6d
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
2 changed files with 30 additions and 8 deletions

View file

@ -40,7 +40,7 @@ def enable_debug_mode():
def format_log_path( def format_log_path(
log_dir=None, log_name=None, timestamp=False, log_dir=None, log_name=None, timestamp=False,
kit=False, tool=False): kit=False, tool=False, append=False):
"""Format path based on args passed, returns pathlib.Path obj.""" """Format path based on args passed, returns pathlib.Path obj."""
log_path = pathlib.Path( log_path = pathlib.Path(
f'{log_dir if log_dir else DEFAULT_LOG_DIR}/' f'{log_dir if log_dir else DEFAULT_LOG_DIR}/'
@ -54,7 +54,8 @@ def format_log_path(
log_path = log_path.resolve() log_path = log_path.resolve()
# Avoid clobbering # Avoid clobbering
log_path = non_clobber_path(log_path) if not append:
log_path = non_clobber_path(log_path)
# Done # Done
return log_path return log_path
@ -121,10 +122,10 @@ def start(config=None):
def update_log_path( def update_log_path(
dest_dir=None, dest_name=None, keep_history=True, timestamp=True): dest_dir=None, dest_name=None, keep_history=True, timestamp=True, append=False):
"""Moves current log file to new path and updates the root logger.""" """Moves current log file to new path and updates the root logger."""
root_logger = logging.getLogger() root_logger = logging.getLogger()
new_path = format_log_path(dest_dir, dest_name, timestamp=timestamp) new_path = format_log_path(dest_dir, dest_name, timestamp=timestamp, append=append)
old_handler = None old_handler = None
old_path = get_root_logger_path() old_path = get_root_logger_path()
os.makedirs(new_path.parent, exist_ok=True) os.makedirs(new_path.parent, exist_ok=True)
@ -147,10 +148,15 @@ def update_log_path(
new_handler = logging.FileHandler(new_path, mode='a') new_handler = logging.FileHandler(new_path, mode='a')
new_handler.setFormatter(old_handler.formatter) new_handler.setFormatter(old_handler.formatter)
# Remove old_handler and log if empty # Remove old_handler
root_logger.removeHandler(old_handler) root_logger.removeHandler(old_handler)
old_handler.close() old_handler.close()
remove_empty_log(old_path)
# Delete orignal log if needed
if keep_history:
remove_empty_log(old_path)
else:
old_path.unlink()
# Add new handler # Add new handler
root_logger.addHandler(new_handler) root_logger.addHandler(new_handler)

View file

@ -38,7 +38,11 @@ from wk.io import (
rename_item, rename_item,
) )
from wk.kit.tools import (download_tool, get_tool_path, run_tool) from wk.kit.tools import (download_tool, get_tool_path, run_tool)
from wk.log import format_log_path, update_log_path from wk.log import (
format_log_path,
get_root_logger_path,
update_log_path,
)
from wk.os.win import ( from wk.os.win import (
OS_VERSION, OS_VERSION,
get_timezone, get_timezone,
@ -277,6 +281,7 @@ def init_run(options):
def init_session(options): def init_session(options):
"""Initialize Auto Repairs session.""" """Initialize Auto Repairs session."""
reg_set_value('HKCU', AUTO_REPAIR_KEY, 'SessionStarted', 1, 'DWORD') reg_set_value('HKCU', AUTO_REPAIR_KEY, 'SessionStarted', 1, 'DWORD')
reg_set_value('HKCU', AUTO_REPAIR_KEY, 'LogName', get_root_logger_path().stem, 'SZ')
# Check timezone # Check timezone
zone = get_timezone() zone = get_timezone()
@ -347,7 +352,7 @@ def load_settings(menus):
def run_auto_repairs(base_menus): def run_auto_repairs(base_menus):
"""Run Auto Repairs.""" """Run Auto Repairs."""
update_log_path(dest_name='Auto Repairs', timestamp=True) set_log_path()
title = f'{KIT_NAME_FULL}: Auto Repairs' title = f'{KIT_NAME_FULL}: Auto Repairs'
clear_screen() clear_screen()
set_title(title) set_title(title)
@ -489,6 +494,17 @@ def save_settings(group, name, result=None, **kwargs):
reg_set_value('HKCU', key_path, value_name, data, data_type) reg_set_value('HKCU', key_path, value_name, data, data_type)
def set_log_path():
"""Set log name using defaults or the saved registry value."""
try:
log_path = reg_read_value('HKCU', AUTO_REPAIR_KEY, 'LogName')
except FileNotFoundError:
# Ignore and use default values
update_log_path(dest_name='Auto Repairs', timestamp=True)
else:
update_log_path(dest_name=log_path, keep_history=False, timestamp=False, append=True)
def show_main_menu(base_menus, menus): def show_main_menu(base_menus, menus):
"""Show main menu and handle actions.""" """Show main menu and handle actions."""
while True: while True: