Welcome to Treelog’s documentation!

Treelog is a logging framework that organizes messages in a tree.

class treelog.DataLog(dirpath: str = '.', names: Callable[[str], Iterable[str]] = <function sequence>)

Output only data.

class treelog.FilterLog(baselog: treelog.proto.Log, minlevel: Optional[treelog.proto.Level] = None, maxlevel: Optional[treelog.proto.Level] = None)

Filter messages based on level.

class treelog.HtmlLog(dirpath: str, *, filename: str = 'log.html', title: Optional[str] = None, htmltitle: Optional[str] = None, favicon: Optional[str] = None)

Output html nested lists.

class treelog.LoggingLog(name: str = 'nutils')

Log to Python’s built-in logging facility.

class treelog.RecordLog(simplify: bool = True)

Record log messages.

The recorded messages can be replayed to the logs that are currently active by replay(). Typical usage is caching expensive operations:

>>> import treelog, pickle
>>> # compute
>>> record = treelog.RecordLog()
>>> with treelog.add(record):
...   treelog.info('computing something expensive')
...   result = 'my expensive result'
computing something expensive
>>> raw = pickle.dumps((record, result))
>>> # reuse
>>> record, result = pickle.loads(raw)
>>> record.replay()
computing something expensive

Note

Exceptions raised while in a Log.context() are not recorded.

replay(log: Optional[treelog.proto.Log] = None) → None

Replay this recorded log.

All recorded messages and files will be written to the log that is either directly specified or currently active.

class treelog.RichOutputLog

Output rich (colored,unicode) text to stream.

class treelog.StderrLog

Output plain text to stream.

class treelog.StdoutLog

Output plain text to stream.

class treelog.TeeLog(baselog1: treelog.proto.Log, baselog2: treelog.proto.Log)

Forward messages to two underlying loggers.

treelog.add(logger: treelog.proto.Log) → AbstractContextManager[treelog.proto.Log]

Add logger to current.

treelog.context(title: str, *initargs: Any, **initkwargs: Any) → Generator[Optional[Callable[[], None]], None, None]

Enterable context.

Returns an enterable object which upon enter creates a context with a given title, to be automatically closed upon exit. In case additional arguments are given the title is used as a format string, and a callable is returned that allows for recontextualization from within the current with-block.

treelog.debugfile(name: str, mode: str) → AbstractContextManager[IO[Any]]

Open file in logger-controlled directory.

Parameters
  • filename (str) –

  • mode (str) – Should be either 'w' (text) or 'wb' (binary data).

treelog.disable() → AbstractContextManager[treelog.proto.Log]

Disable logger.

treelog.errorfile(name: str, mode: str) → AbstractContextManager[IO[Any]]

Open file in logger-controlled directory.

Parameters
  • filename (str) –

  • mode (str) – Should be either 'w' (text) or 'wb' (binary data).

treelog.infofile(name: str, mode: str) → AbstractContextManager[IO[Any]]

Open file in logger-controlled directory.

Parameters
  • filename (str) –

  • mode (str) – Should be either 'w' (text) or 'wb' (binary data).

treelog.set(logger: treelog.proto.Log) → Generator[treelog.proto.Log, None, None]

Set logger as current.

treelog.userfile(name: str, mode: str) → AbstractContextManager[IO[Any]]

Open file in logger-controlled directory.

Parameters
  • filename (str) –

  • mode (str) – Should be either 'w' (text) or 'wb' (binary data).

treelog.warningfile(name: str, mode: str) → AbstractContextManager[IO[Any]]

Open file in logger-controlled directory.

Parameters
  • filename (str) –

  • mode (str) – Should be either 'w' (text) or 'wb' (binary data).

treelog.withcontext(f: Callable[[], T]) → Callable[[], T]

Decorator; executes the wrapped function in its own logging context.

Indices and tables