Skip to content

Commit 8a42c84

Browse files
committed
Rename logging env vars. Set default dest to stdout
1 parent c049bbf commit 8a42c84

File tree

3 files changed

+27
-27
lines changed

3 files changed

+27
-27
lines changed

benchmarks/bench_logging_overhead.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
1313
Usage:
1414
# Set the logging level before running
15-
export FLASHINFER_APILOG_LEVEL=2
15+
export FLASHINFER_LOGLEVEL_DBG=2
1616
python bench_logging_overhead.py
1717
1818
# Or run with different levels
19-
FLASHINFER_APILOG_LEVEL=0 python bench_logging_overhead.py
20-
FLASHINFER_APILOG_LEVEL=1 python bench_logging_overhead.py
21-
FLASHINFER_APILOG_LEVEL=2 python bench_logging_overhead.py
22-
FLASHINFER_APILOG_LEVEL=3 python bench_logging_overhead.py
19+
FLASHINFER_LOGLEVEL_DBG=0 python bench_logging_overhead.py
20+
FLASHINFER_LOGLEVEL_DBG=1 python bench_logging_overhead.py
21+
FLASHINFER_LOGLEVEL_DBG=2 python bench_logging_overhead.py
22+
FLASHINFER_LOGLEVEL_DBG=3 python bench_logging_overhead.py
2323
2424
# Or use the helper script to run all levels
2525
bash benchmark_all_levels.sh
@@ -33,8 +33,8 @@
3333
from typing import List, Tuple
3434

3535
# Get logging level BEFORE importing flashinfer
36-
LOGGING_LEVEL = int(os.environ.get("FLASHINFER_APILOG_LEVEL", "0"))
37-
LOG_DEST = os.environ.get("FLASHINFER_APILOG_DEST", "/tmp/flashinfer_benchmark_log.txt")
36+
LOGGING_LEVEL = int(os.environ.get("FLASHINFER_LOGLEVEL_DBG", "0"))
37+
LOG_DEST = os.environ.get("FLASHINFER_LOGDEST_DBG", "/tmp/flashinfer_benchmark_log.txt")
3838

3939
# Import the decorator
4040
try:
@@ -226,8 +226,8 @@ def main():
226226

227227
# Display logging configuration
228228
print("\nLogging Configuration:")
229-
print(f" FLASHINFER_APILOG_LEVEL = {LOGGING_LEVEL}")
230-
print(f" FLASHINFER_APILOG_DEST = {LOG_DEST}")
229+
print(f" FLASHINFER_LOGLEVEL_DBG = {LOGGING_LEVEL}")
230+
print(f" FLASHINFER_LOGDEST_DBG = {LOG_DEST}")
231231

232232
# Get level name
233233
level_names = {
@@ -331,7 +331,7 @@ def main():
331331
print("\nTo benchmark other levels, run:")
332332
for level in [0, 1, 2, 3]:
333333
if level != LOGGING_LEVEL:
334-
print(f" FLASHINFER_APILOG_LEVEL={level} python {sys.argv[0]}")
334+
print(f" FLASHINFER_LOGLEVEL_DBG={level} python {sys.argv[0]}")
335335

336336
print("\n" + "=" * 80)
337337
print("Benchmark complete!")

flashinfer/api_logging.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626

2727

2828
# Read environment variables once at module load time
29-
_API_LOG_LEVEL = int(os.environ.get("FLASHINFER_APILOG_LEVEL", "0"))
30-
_API_LOG_DEST = os.environ.get("FLASHINFER_APILOG_DEST", "./flashinfer_log.txt")
29+
_API_LOG_LEVEL = int(os.environ.get("FLASHINFER_LOGLEVEL_DBG", "0"))
30+
_API_LOG_DEST = os.environ.get("FLASHINFER_LOGDEST_DBG", "stdout")
3131

3232
# Create logger using Python's logging library
3333
_logger = logging.getLogger("flashinfer.api")
@@ -41,7 +41,7 @@ def _setup_logger():
4141
_logger.setLevel(logging.CRITICAL + 1) # Higher than any level
4242
return
4343

44-
# All enabled levels use loggging.DEBUG; verbosity is controlled by FLASHINFER_APILOG_LEVEL instead
44+
# All enabled levels use loggging.DEBUG; verbosity is controlled by FLASHINFER_LOGLEVEL_DBG instead
4545
_logger.setLevel(logging.DEBUG)
4646

4747
# Remove any existing handlers
@@ -446,17 +446,17 @@ def flashinfer_api_log(func: Callable = None) -> Callable:
446446
Decorator to log FlashInfer API calls using Python's logging library.
447447
448448
This decorator integrates with Python's standard logging infrastructure while
449-
maintaining zero overhead when disabled (FLASHINFER_APILOG_LEVEL=0).
449+
maintaining zero overhead when disabled (FLASHINFER_LOGLEVEL_DBG=0).
450450
451451
Environment Variables
452452
---------------------
453-
FLASHINFER_APILOG_LEVEL : int (default: 0)
453+
FLASHINFER_LOGLEVEL_DBG : int (default: 0)
454454
- 0: No logging (zero overhead - decorator returns original function)
455455
- 1: Log function name only (logged BEFORE execution - crash-safe)
456456
- 2: Log function name + inputs/outputs with metadata (inputs logged BEFORE execution - crash-safe)
457457
- 3: Log function name + inputs/outputs with metadata + tensor statistics (inputs logged BEFORE execution - crash-safe)
458458
459-
FLASHINFER_APILOG_DEST : str (default: "./flashinfer_log.txt")
459+
FLASHINFER_LOGDEST_DBG : str (default: "stdout")
460460
- "stdout": Log to standard output
461461
- "stderr": Log to standard error
462462
- <path>: Log to specified file path
@@ -471,7 +471,7 @@ def flashinfer_api_log(func: Callable = None) -> Callable:
471471
472472
Notes
473473
-----
474-
- When FLASHINFER_APILOG_LEVEL=0, the decorator has truly zero overhead
474+
- When FLASHINFER_LOGLEVEL_DBG=0, the decorator has truly zero overhead
475475
as it returns the original function unchanged.
476476
- Function names and inputs are logged BEFORE execution:
477477
- Level 1: Function name only

tests/utils/test_logging.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,30 +47,30 @@ class TestAPILogging:
4747
def setup_and_teardown(self):
4848
"""Reset environment and reimport logging module for each test."""
4949
# Store original environment
50-
original_level = os.environ.get("FLASHINFER_APILOG_LEVEL")
51-
original_dest = os.environ.get("FLASHINFER_APILOG_DEST")
50+
original_level = os.environ.get("FLASHINFER_LOGLEVEL_DBG")
51+
original_dest = os.environ.get("FLASHINFER_LOGDEST_DBG")
5252

5353
yield
5454

5555
# Restore original environment
5656
if original_level is not None:
57-
os.environ["FLASHINFER_APILOG_LEVEL"] = original_level
58-
elif "FLASHINFER_APILOG_LEVEL" in os.environ:
59-
del os.environ["FLASHINFER_APILOG_LEVEL"]
57+
os.environ["FLASHINFER_LOGLEVEL_DBG"] = original_level
58+
elif "FLASHINFER_LOGLEVEL_DBG" in os.environ:
59+
del os.environ["FLASHINFER_LOGLEVEL_DBG"]
6060

6161
if original_dest is not None:
62-
os.environ["FLASHINFER_APILOG_DEST"] = original_dest
63-
elif "FLASHINFER_APILOG_DEST" in os.environ:
64-
del os.environ["FLASHINFER_APILOG_DEST"]
62+
os.environ["FLASHINFER_LOGDEST_DBG"] = original_dest
63+
elif "FLASHINFER_LOGDEST_DBG" in os.environ:
64+
del os.environ["FLASHINFER_LOGDEST_DBG"]
6565

6666
# Force reimport to pick up new environment variables
6767
if "flashinfer.api_logging" in sys.modules:
6868
del sys.modules["flashinfer.api_logging"]
6969

7070
def setup_logging(self, level: int, dest: str = "stdout"):
7171
"""Helper to set up logging environment and reimport."""
72-
os.environ["FLASHINFER_APILOG_LEVEL"] = str(level)
73-
os.environ["FLASHINFER_APILOG_DEST"] = dest
72+
os.environ["FLASHINFER_LOGLEVEL_DBG"] = str(level)
73+
os.environ["FLASHINFER_LOGDEST_DBG"] = dest
7474

7575
# Force reimport
7676
if "flashinfer.api_logging" in sys.modules:

0 commit comments

Comments
 (0)