Coverage for agentlib/core/logging_.py: 95%
20 statements
« prev ^ index » next coverage.py v7.4.4, created at 2025-04-07 16:27 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2025-04-07 16:27 +0000
1import logging
2from typing import TYPE_CHECKING
4if TYPE_CHECKING:
5 from agentlib import Environment
8class CustomLogger(logging.Logger):
9 """Subclass of Logger that adds the env_time to the record, allowing it to print
10 the current time."""
12 def __init__(self, name, env: "Environment", level=logging.NOTSET):
13 super().__init__(name, level)
14 self.env = env
16 def makeRecord(
17 self,
18 name,
19 level,
20 fn,
21 lno,
22 msg,
23 args,
24 exc_info,
25 func=None,
26 extra=None,
27 sinfo=None,
28 ):
29 record = super().makeRecord(
30 name, level, fn, lno, msg, args, exc_info, func, extra, sinfo
31 )
32 record.env_time = self.env.pretty_time()
33 return record
36def create_logger(env: "Environment", name: str) -> CustomLogger:
37 """Creates a logger that displays the environment time when logging."""
38 # Create a custom logger
39 custom_logger = CustomLogger(name, env=env)
40 custom_logger.setLevel(logging.root.getEffectiveLevel())
42 # Create a formatter
43 formatter = logging.Formatter("%(env_time)s %(levelname)s: %(name)s: %(message)s")
45 # Create a StreamHandler and add it to the logger
46 stream_handler = logging.StreamHandler()
47 stream_handler.setFormatter(formatter)
48 custom_logger.addHandler(stream_handler)
49 return custom_logger