47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
# rstat_tool/logger_setup.py
|
|
|
|
import logging
|
|
import sys
|
|
|
|
# Get the root logger
|
|
logger = logging.getLogger("rstat_app")
|
|
logger.setLevel(logging.INFO) # Set the minimum level of messages to handle
|
|
|
|
# Prevent the logger from propagating messages to the parent (root) logger
|
|
logger.propagate = False
|
|
|
|
# Only add handlers if they haven't been added before
|
|
# This prevents duplicate log messages if this function is called multiple times.
|
|
if not logger.handlers:
|
|
# --- Console Handler ---
|
|
# This handler prints logs to the standard output (your terminal)
|
|
console_handler = logging.StreamHandler(sys.stdout)
|
|
console_handler.setLevel(logging.INFO)
|
|
# A simple formatter for the console
|
|
console_formatter = logging.Formatter('%(message)s')
|
|
console_handler.setFormatter(console_formatter)
|
|
logger.addHandler(console_handler)
|
|
|
|
# --- File Handler ---
|
|
# This handler writes logs to a file
|
|
# 'a' stands for append mode
|
|
file_handler = logging.FileHandler("rstat.log", mode='a')
|
|
file_handler.setLevel(logging.INFO)
|
|
# A more detailed formatter for the file, including timestamp and log level
|
|
file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
|
|
file_handler.setFormatter(file_formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
# Get the logger used by the yfinance library
|
|
yfinance_logger = logging.getLogger("yfinance")
|
|
# Set its level to capture warnings and errors
|
|
yfinance_logger.setLevel(logging.WARNING)
|
|
# Add our existing handlers to it. This tells yfinance's logger
|
|
# to send its messages to our console and our log file.
|
|
if not yfinance_logger.handlers:
|
|
yfinance_logger.addHandler(console_handler)
|
|
yfinance_logger.addHandler(file_handler)
|
|
|
|
def get_logger():
|
|
"""A simple function to get our configured logger."""
|
|
return logger |