logging fix
This commit is contained in:
@@ -13,6 +13,21 @@ from src.strategy.touch_turn import TouchTurnStrategy
|
|||||||
from src.execution.manager import ExecutionManager
|
from src.execution.manager import ExecutionManager
|
||||||
from scripts.find_isa_candidates import find_best_isa_tickers
|
from scripts.find_isa_candidates import find_best_isa_tickers
|
||||||
from scripts.backtest import backtest_ticker
|
from scripts.backtest import backtest_ticker
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Stream redirector to capture print() statements from sub-scripts into the log file
|
||||||
|
class StreamToLogger:
|
||||||
|
def __init__(self, logger, log_level=logging.INFO):
|
||||||
|
self.logger = logger
|
||||||
|
self.log_level = log_level
|
||||||
|
self.linebuf = ''
|
||||||
|
|
||||||
|
def write(self, buf):
|
||||||
|
for line in buf.rstrip().splitlines():
|
||||||
|
self.logger.log(self.log_level, line.rstrip())
|
||||||
|
|
||||||
|
def flush(self):
|
||||||
|
pass
|
||||||
|
|
||||||
# Force flush handler to ensure bot logs are written to disk immediately
|
# Force flush handler to ensure bot logs are written to disk immediately
|
||||||
class FlushHandler(logging.FileHandler):
|
class FlushHandler(logging.FileHandler):
|
||||||
@@ -24,8 +39,8 @@ class FlushHandler(logging.FileHandler):
|
|||||||
os.makedirs("logs", exist_ok=True)
|
os.makedirs("logs", exist_ok=True)
|
||||||
log_filename = datetime.now().strftime("logs/bot_%Y-%m-%d.log")
|
log_filename = datetime.now().strftime("logs/bot_%Y-%m-%d.log")
|
||||||
|
|
||||||
# Configure logging to both console and file
|
# Configure logging
|
||||||
file_handler = FlushHandler(log_filename)
|
file_handler = FlushHandler(log_filename, mode='a')
|
||||||
stream_handler = logging.StreamHandler()
|
stream_handler = logging.StreamHandler()
|
||||||
|
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
@@ -35,11 +50,15 @@ logging.basicConfig(
|
|||||||
)
|
)
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Force flush helper to ensure bot logs are written to disk before thread exit
|
# Redirect stdout and stderr
|
||||||
|
sys.stdout = StreamToLogger(logger, logging.INFO)
|
||||||
|
sys.stderr = StreamToLogger(logger, logging.ERROR)
|
||||||
|
|
||||||
def flush_logs():
|
def flush_logs():
|
||||||
for handler in logging.getLogger().handlers:
|
for handler in logging.getLogger().handlers:
|
||||||
handler.flush()
|
handler.flush()
|
||||||
|
|
||||||
|
|
||||||
PNL_FILE = "pnl_tracking.csv"
|
PNL_FILE = "pnl_tracking.csv"
|
||||||
|
|
||||||
def record_pnl(ticker, direction, entry_price, exit_price, reason, pnl_r, trading_ticker=None):
|
def record_pnl(ticker, direction, entry_price, exit_price, reason, pnl_r, trading_ticker=None):
|
||||||
|
|||||||
Reference in New Issue
Block a user