33import json
44import logging
55import os
6+ import sys
67from dataclasses import dataclass , field , fields
78from datetime import datetime
89from enum import Enum , StrEnum
@@ -488,7 +489,9 @@ async def expand_globs(
488489 return list (result )
489490
490491
491- def config_logging (name : str = "vectorcode" ): # pragma: nocover
492+ def config_logging (
493+ name : str = "vectorcode" , stdio : bool = True , log_file : bool = False
494+ ): # pragma: nocover
492495 """Configure the logging module. This should be called before a `main` function (CLI, LSP or MCP)."""
493496
494497 logging .root .handlers = []
@@ -503,36 +506,37 @@ def config_logging(name: str = "vectorcode"): # pragma: nocover
503506 )
504507
505508 handlers = []
506- if level is not None :
509+ if level is not None or log_file :
507510 log_dir = os .path .expanduser ("~/.local/share/vectorcode/logs/" )
508511 os .makedirs (log_dir , exist_ok = True )
509512 # File handler
510513 log_file_path = os .path .join (
511514 log_dir , f"{ name } -{ datetime .now ().strftime ('%Y-%m-%d_%H-%M-%S' )} .log"
512515 )
513516 file_handler = logging .FileHandler (log_file_path )
514- file_handler .setLevel (level )
517+ file_handler .setLevel (level or logging . WARN )
515518 handlers .append (file_handler )
516519
517- import colorlog
518-
519- # Console handler
520- console_handler = colorlog .StreamHandler ()
521- console_handler .setFormatter (
522- colorlog .ColoredFormatter (
523- fmt = "%(log_color)s%(levelname)s%(reset)s: %(name)s : %(message)s" ,
524- log_colors = {
525- "DEBUG" : "cyan" ,
526- "INFO" : "green" ,
527- "WARNING" : "yellow" ,
528- "ERROR" : "red" ,
529- "CRITICAL" : "bold_red" ,
530- },
531- reset = True ,
520+ if stdio :
521+ import colorlog
522+
523+ # Console handler
524+ console_handler = colorlog .StreamHandler (sys .stderr )
525+ console_handler .setFormatter (
526+ colorlog .ColoredFormatter (
527+ fmt = "%(log_color)s%(levelname)s%(reset)s: %(name)s : %(message)s" ,
528+ log_colors = {
529+ "DEBUG" : "cyan" ,
530+ "INFO" : "green" ,
531+ "WARNING" : "yellow" ,
532+ "ERROR" : "red" ,
533+ "CRITICAL" : "bold_red" ,
534+ },
535+ reset = True ,
536+ )
532537 )
533- )
534- console_handler .setLevel (level or logging .WARN )
535- handlers .append (console_handler )
538+ console_handler .setLevel (level or logging .WARN )
539+ handlers .append (console_handler )
536540
537541 logging .basicConfig (
538542 handlers = handlers ,
0 commit comments