mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2025-12-11 03:34:57 +08:00
[Log] Use a relative path in debug-level logs to distinguish files with identical names (#23846)
Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
This commit is contained in:
parent
15de5ff9ea
commit
b5fb3005a8
@ -22,7 +22,7 @@ VLLM_LOGGING_LEVEL = envs.VLLM_LOGGING_LEVEL
|
|||||||
VLLM_LOGGING_PREFIX = envs.VLLM_LOGGING_PREFIX
|
VLLM_LOGGING_PREFIX = envs.VLLM_LOGGING_PREFIX
|
||||||
|
|
||||||
_FORMAT = (f"{VLLM_LOGGING_PREFIX}%(levelname)s %(asctime)s "
|
_FORMAT = (f"{VLLM_LOGGING_PREFIX}%(levelname)s %(asctime)s "
|
||||||
"[%(filename)s:%(lineno)d] %(message)s")
|
"[%(fileinfo)s:%(lineno)d] %(message)s")
|
||||||
_DATE_FORMAT = "%m-%d %H:%M:%S"
|
_DATE_FORMAT = "%m-%d %H:%M:%S"
|
||||||
|
|
||||||
DEFAULT_LOGGING_CONFIG = {
|
DEFAULT_LOGGING_CONFIG = {
|
||||||
|
|||||||
@ -2,16 +2,77 @@
|
|||||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from vllm import envs
|
||||||
|
|
||||||
|
|
||||||
class NewLineFormatter(logging.Formatter):
|
class NewLineFormatter(logging.Formatter):
|
||||||
"""Adds logging prefix to newlines to align multi-line messages."""
|
"""Adds logging prefix to newlines to align multi-line messages."""
|
||||||
|
|
||||||
def __init__(self, fmt, datefmt=None, style="%"):
|
def __init__(self, fmt, datefmt=None, style="%"):
|
||||||
logging.Formatter.__init__(self, fmt, datefmt, style)
|
super().__init__(fmt, datefmt, style)
|
||||||
|
|
||||||
|
self.use_relpath = envs.VLLM_LOGGING_LEVEL == "DEBUG"
|
||||||
|
if self.use_relpath:
|
||||||
|
self.root_dir = Path(__file__).resolve().parent.parent.parent
|
||||||
|
|
||||||
def format(self, record):
|
def format(self, record):
|
||||||
msg = logging.Formatter.format(self, record)
|
|
||||||
|
def shrink_path(relpath: Path) -> str:
|
||||||
|
"""
|
||||||
|
Shortens a file path for logging display:
|
||||||
|
- Removes leading 'vllm' folder if present.
|
||||||
|
- If path starts with 'v1',
|
||||||
|
keeps the first two and last two levels,
|
||||||
|
collapsing the middle as '...'.
|
||||||
|
- Otherwise, keeps the first and last two levels,
|
||||||
|
collapsing the middle as '...'.
|
||||||
|
- If the path is short, returns it as-is.
|
||||||
|
- Examples:
|
||||||
|
vllm/model_executor/layers/quantization/utils/fp8_utils.py ->
|
||||||
|
model_executor/.../quantization/utils/fp8_utils.py
|
||||||
|
vllm/model_executor/layers/quantization/awq.py ->
|
||||||
|
model_executor/layers/quantization/awq.py
|
||||||
|
vllm/v1/attention/backends/mla/common.py ->
|
||||||
|
v1/attention/backends/mla/common.py
|
||||||
|
|
||||||
|
Args:
|
||||||
|
relpath (Path): The relative path to be shortened.
|
||||||
|
Returns:
|
||||||
|
str: The shortened path string for display.
|
||||||
|
"""
|
||||||
|
parts = list(relpath.parts)
|
||||||
|
new_parts = []
|
||||||
|
if parts and parts[0] == "vllm":
|
||||||
|
parts = parts[1:]
|
||||||
|
if parts and parts[0] == "v1":
|
||||||
|
new_parts += parts[:2]
|
||||||
|
parts = parts[2:]
|
||||||
|
elif parts:
|
||||||
|
new_parts += parts[:1]
|
||||||
|
parts = parts[1:]
|
||||||
|
if len(parts) > 2:
|
||||||
|
new_parts += ["..."] + parts[-2:]
|
||||||
|
else:
|
||||||
|
new_parts += parts
|
||||||
|
return "/".join(new_parts)
|
||||||
|
|
||||||
|
if self.use_relpath:
|
||||||
|
abs_path = getattr(record, "pathname", None)
|
||||||
|
if abs_path:
|
||||||
|
try:
|
||||||
|
relpath = Path(abs_path).resolve().relative_to(
|
||||||
|
self.root_dir)
|
||||||
|
except Exception:
|
||||||
|
relpath = Path(record.filename)
|
||||||
|
else:
|
||||||
|
relpath = Path(record.filename)
|
||||||
|
record.fileinfo = shrink_path(relpath)
|
||||||
|
else:
|
||||||
|
record.fileinfo = record.filename
|
||||||
|
|
||||||
|
msg = super().format(record)
|
||||||
if record.message != "":
|
if record.message != "":
|
||||||
parts = msg.split(record.message)
|
parts = msg.split(record.message)
|
||||||
msg = msg.replace("\n", "\r\n" + parts[0])
|
msg = msg.replace("\n", "\r\n" + parts[0])
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user