تمرين إعادة البناء
عداد مستويات السجلات
احسب مستويات INFO وWARNING وERROR داخل ملف سجلات نصي.
python
~20 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
import argparse
import re
from collections import Counter
from pathlib import Path
LEVEL_RE = re.compile(r"\b(DEBUG|INFO|WARNING|WARN|ERROR|CRITICAL)\b", re.IGNORECASE)
def normalize(level: str) -> str:
upper = level.upper()
return "WARNING" if upper == "WARN" else upper
def count_levels(path: Path) -> Counter[str]:
counts: Counter[str] = Counter()
for line in path.read_text(encoding="utf-8", errors="replace").splitlines():
match = LEVEL_RE.search(line)
if match:
counts[normalize(match.group(1))] += 1
return counts
def main() -> None:
parser = argparse.ArgumentParser(description="Count log levels in a text file.")
parser.add_argument("log_file", type=Path)
args = parser.parse_args()
counts = count_levels(args.log_file)
for level in ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]:
print(f"{level}: {counts[level]}")
if __name__ == "__main__":
main()اكتب هنا