xo-umbrella2/xo-indentlog/docs/logging_impl.rst
Roland Conybeare 966c3903e1 git subrepo clone git@github.com:Rconybea/xo-indentlog.git xo-indentlog
subrepo:
  subdir:   "xo-indentlog"
  merged:   "0834c6ad"
upstream:
  origin:   "git@github.com:Rconybea/xo-indentlog.git"
  branch:   "main"
  commit:   "0834c6ad"
git-subrepo:
  version:  "0.4.9"
  origin:   "???"
  commit:   "???"
2026-06-06 21:30:17 -04:00

65 lines
1.6 KiB
ReStructuredText

.. _logging_impl:
Logging Components
==================
Install instructions :doc:`here<install>`
Abstraction tower for *xo-indentlog* logging components:
.. ditaa::
:--scale: 0.85
+------------------------------------------+
| basic_scope |
+------------------------------------------+
| state_impl |
+-----------------------+------------------+
| | log_config |
| log_streambuf +------------------+
| | log_level |
+-----------------------+------------------+
**basic_scope**
Primary entry point for scope-indented logging.
Lightweight with RAII semantics.
**state_impl**
Bookkeeping for internal state, managed by ``basic_scope``.
**log_streambuf**
Custom streambuf implementation, buffering in memory.
**log_config**
Logging configuration, to control formatting behavior.
**log_level**
Categorize log messages by importance for filtering.
.. toctree::
:maxdepth: 2
xo::scope <scope-reference>
Log_streambuf
-------------
Indentlog relies on a custom ``std::streambuf`` implementation, ``xo::log_streambuf``.
log_streambuf captures content in an internal vector, expanding it on demand.
To support pretty-printing, log_streambuf tracks current position relative to left margin
.. uml::
:caption: log_streambuf
:scale: 99%
:align: center
class streambuf {
}
class log_streambuf {
- solpos_: size_t
- buf_v_: vector
}
streambuf <|-- log_streambuf