Skip to content

Commit a361d99

Browse files
committed
🐛 allow to specify log directory
1 parent 9ae1074 commit a361d99

File tree

4 files changed

+25
-13
lines changed

4 files changed

+25
-13
lines changed

src/vuegen/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ def main():
3636
logger_suffix = f"{report_type}_report_{str(report_name)}"
3737

3838
# Initialize logger
39-
logger = get_logger(f"{logger_suffix}")
40-
39+
logger, logfile = get_logger(f"{logger_suffix}")
40+
logger.info("logfile: %s", logfile)
4141
# Generate the report
4242
report_generator.get_report(
4343
report_type=report_type,

src/vuegen/config_manager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ def __init__(self, logger: Optional[logging.Logger] = None):
2222
logger : logging.Logger, optional
2323
A logger instance for the class. If not provided, a default logger will be created.
2424
"""
25-
self.logger = logger or get_logger("report")
25+
if logger is None:
26+
logger, _ = get_logger("report")
27+
self.logger = logger
2628

2729
def _create_title_fromdir(self, file_dirname: str) -> str:
2830
"""

src/vuegen/report_generator.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def get_report(
1515
config_path: str = None,
1616
dir_path: str = None,
1717
streamlit_autorun: bool = False,
18+
output_dir: Path = None,
1819
) -> None:
1920
"""
2021
Generate and run a report based on the specified engine.
@@ -37,9 +38,16 @@ def get_report(
3738
ValueError
3839
If neither 'config_path' nor 'directory' is provided.
3940
"""
41+
if output_dir is None:
42+
output_dir = Path(".")
43+
else:
44+
output_dir = Path(output_dir)
4045
# Initialize logger only if it's not provided
4146
if logger is None:
42-
logger = get_logger("report")
47+
_folder = "logs"
48+
if output_dir:
49+
_folder = output_dir / _folder
50+
logger, _ = get_logger("report", folder=_folder)
4351

4452
# Create the config manager object
4553
config_manager = ConfigManager(logger)

src/vuegen/utils.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -635,9 +635,11 @@ def generate_log_filename(folder: str = "logs", suffix: str = "") -> str:
635635
str
636636
The file path to the log file
637637
"""
638-
# PRECONDITIONS
639-
create_folder(folder)
640-
638+
try:
639+
# PRECONDITIONS
640+
create_folder(folder) # ? Path(folder).mkdir(parents=True, exist_ok=True)
641+
except OSError as e:
642+
raise OSError(f"Error creating directory '{folder}': {e}")
641643
# MAIN FUNCTION
642644
log_filename = get_time(incl_timezone=False) + "_" + suffix + ".log"
643645
log_filepath = os.path.join(folder, log_filename)
@@ -703,7 +705,7 @@ def init_log(
703705
return logger
704706

705707

706-
def get_logger(log_suffix):
708+
def get_logger(log_suffix, folder="logs", display=True) -> tuple[logging.Logger, str]:
707709
"""
708710
Initialize the logger with a log file name that includes an optional suffix.
709711
@@ -714,19 +716,19 @@ def get_logger(log_suffix):
714716
715717
Returns
716718
-------
717-
logging.Logger
718-
An initialized logger instance.
719+
tuple[logging.Logger, str
720+
A tuple containing the logger instance and the log file path.
719721
"""
720722
# Generate log file name
721-
log_file = generate_log_filename(suffix=log_suffix)
723+
log_file = generate_log_filename(folder=folder, suffix=log_suffix)
722724

723725
# Initialize logger
724-
logger = init_log(log_file, display=True)
726+
logger = init_log(log_file, display=display)
725727

726728
# Log the path to the log file
727729
logger.info(f"Path to log file: {log_file}")
728730

729-
return logger
731+
return logger, log_file
730732

731733

732734
def print_completion_message(report_type: str):

0 commit comments

Comments
 (0)