diff --git a/docs/reference.md b/docs/reference.md index c27c24846..e481690bd 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -648,7 +648,7 @@ vf.print_prompt_completions_sample(outputs: GenerateOutputs, n: int = 3) Pretty-print sample rollouts. ```python -vf.setup_logging(level: str = "INFO") +vf.setup_logging(level: str = "INFO", log_file: str | None = None) ``` -Configure verifiers logging. Set `VF_LOG_LEVEL` env var to change default. +Configure verifiers logging. Set `VF_LOG_LEVEL` env var to change default. If `log_file` is provided, logs to that file instead of stderr. diff --git a/verifiers/__init__.py b/verifiers/__init__.py index 33d69d8c0..d74192d1c 100644 --- a/verifiers/__init__.py +++ b/verifiers/__init__.py @@ -43,6 +43,7 @@ def setup_logging( level: str = "INFO", log_format: Optional[str] = None, date_format: Optional[str] = None, + log_file: Optional[str] = None, ) -> None: """ Setup basic logging configuration for the verifiers package. @@ -51,14 +52,18 @@ def setup_logging( level: The logging level to use. Defaults to "INFO". log_format: Custom log format string. If None, uses default format. date_format: Custom date format string. If None, uses default format. + log_file: Path to log file. If None, logs to stderr. """ if log_format is None: log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" if date_format is None: date_format = "%Y-%m-%d %H:%M:%S" - # Create a StreamHandler that writes to stderr - handler = logging.StreamHandler(sys.stderr) + # Create handler - file or stderr + if log_file is not None: + handler = logging.FileHandler(log_file) + else: + handler = logging.StreamHandler(sys.stderr) handler.setFormatter(logging.Formatter(fmt=log_format, datefmt=date_format)) # Get the root logger for the verifiers package