import sys
from datetime import datetime
from pathlib import Path
from logging import DEBUG, INFO, WARNING, ERROR, CRITICAL
from loguru import logger
from vnpy.trader.setting import SETTINGS
from vnpy.trader.utility import get_folder_path
__all__ = [
"DEBUG",
"INFO",
"WARNING",
"ERROR",
"CRITICAL",
"logger",
]
# Log format
format: str = (
"{time:YYYY-MM-DD HH:mm:ss.SSS} "
"| {level} "
"| {extra[gateway_name]} "
"| {message}"
)
# Add default gateway
logger.configure(extra={"gateway_name": "Logger"})
# Log level
level: int = SETTINGS["log.level"]
# Remove default stderr output
logger.remove()
# Add console output
if SETTINGS["log.console"]:
logger.add(sink=sys.stdout, level=level, format=format)
# Add file output
if SETTINGS["log.file"]:
today_date: str = datetime.now().strftime("%Y%m%d")
filename: str = f"vt_{today_date}.log"
log_path: Path = get_folder_path("log")
file_path: Path = log_path.joinpath(filename)
logger.add(sink=file_path, level=level, format=format)