xo-expression2/xo-indentlog/docs/logging_impl.rst

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