-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathlogger.py
More file actions
50 lines (38 loc) · 1.47 KB
/
logger.py
File metadata and controls
50 lines (38 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import logging
import sys
from logging.handlers import RotatingFileHandler
from pathlib import Path
from runtime_paths import resolve_runtime_paths
def get_log_file() -> Path:
return resolve_runtime_paths().logs_dir / "temodar_agent.log"
def build_rotating_file_handler() -> RotatingFileHandler | None:
log_file = get_log_file()
try:
log_file.parent.mkdir(parents=True, exist_ok=True)
handler = RotatingFileHandler(log_file, maxBytes=10 * 1024 * 1024, backupCount=5)
except OSError:
return None
handler.setLevel(logging.DEBUG)
handler.setFormatter(
logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
)
return handler
def _build_console_handler() -> logging.StreamHandler:
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(
logging.Formatter("%(asctime)s - %(levelname)s - %(message)s", datefmt="%H:%M:%S")
)
return console_handler
def setup_logger(name: str = "temodar_agent") -> logging.Logger:
logger = logging.getLogger(name)
if logger.hasHandlers():
return logger
logger.setLevel(logging.INFO)
logger.addHandler(_build_console_handler())
file_handler = build_rotating_file_handler()
if file_handler is not None:
logger.addHandler(file_handler)
else:
logger.warning("File logging disabled because the log directory is not writable.")
return logger