MCPcopy Index your code
hub / github.com/FSoft-AI4Code/CodeWiki / CLILogger

Class CLILogger

codewiki/cli/utils/logging.py:11–71  ·  view source on GitHub ↗

Logger for CLI with support for verbose and normal modes.

Source from the content-addressed store, hash-verified

9
10
11class CLILogger:
12 """Logger for CLI with support for verbose and normal modes."""
13
14 def __init__(self, verbose: bool = False):
15 """
16 Initialize the logger.
17
18 Args:
19 verbose: Enable verbose output
20 """
21 self.verbose = verbose
22 self.start_time = datetime.now()
23
24 def debug(self, message: str):
25 """Log debug message (only in verbose mode)."""
26 if self.verbose:
27 timestamp = datetime.now().strftime("%H:%M:%S")
28 click.secho(f"[{timestamp}] {message}", fg="cyan", dim=True)
29
30 def info(self, message: str):
31 """Log info message."""
32 click.echo(message)
33
34 def success(self, message: str):
35 """Log success message in green."""
36 click.secho(f"✓ {message}", fg="green")
37
38 def warning(self, message: str):
39 """Log warning message in yellow."""
40 click.secho(f"⚠️ {message}", fg="yellow")
41
42 def error(self, message: str):
43 """Log error message in red."""
44 click.secho(f"✗ {message}", fg="red", err=True)
45
46 def step(self, message: str, step: Optional[int] = None, total: Optional[int] = None):
47 """
48 Log a processing step.
49
50 Args:
51 message: Step description
52 step: Current step number
53 total: Total number of steps
54 """
55 if step is not None and total is not None:
56 prefix = f"[{step}/{total}]"
57 else:
58 prefix = "→"
59
60 click.secho(f"{prefix} {message}", fg="blue", bold=True)
61
62 def elapsed_time(self) -> str:
63 """Get elapsed time since logger was created."""
64 elapsed = datetime.now() - self.start_time
65 minutes = int(elapsed.total_seconds() // 60)
66 seconds = int(elapsed.total_seconds() % 60)
67
68 if minutes > 0:

Callers 1

create_loggerFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected