blob: e8bc06dd901c76a12c5896aa6434523260904ac7 [file]
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.8" xml:lang="en-US">
<compounddef id="classiceberg_1_1Logger" kind="class" language="C++" prot="public" abstract="yes">
<compoundname>iceberg::Logger</compoundname>
<derivedcompoundref refid="classiceberg_1_1CerrLogger" prot="public" virt="non-virtual">iceberg::CerrLogger</derivedcompoundref>
<includes refid="logger_8h" local="no">logger.h</includes>
<sectiondef kind="public-func">
<memberdef kind="function" id="classiceberg_1_1Logger_1aadc6a4775fd35424936102100cc0ba2b" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
<type></type>
<definition>virtual iceberg::Logger::~Logger</definition>
<argsstring>()=default</argsstring>
<name>~Logger</name>
<qualifiedname>iceberg::Logger::~Logger</qualifiedname>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="148" column="11"/>
</memberdef>
<memberdef kind="function" id="classiceberg_1_1Logger_1afb2309f921f8ebb7aa88ada353f37877" prot="public" static="no" const="no" explicit="no" inline="yes" virt="virtual">
<type>Status</type>
<definition>virtual Status iceberg::Logger::Initialize</definition>
<argsstring>(const std::unordered_map&lt; std::string, std::string &gt; &amp;properties)</argsstring>
<name>Initialize</name>
<qualifiedname>iceberg::Logger::Initialize</qualifiedname>
<param>
<type>const std::unordered_map&lt; std::string, std::string &gt; &amp;</type>
<declname>properties</declname>
</param>
<briefdescription>
<para>Property-based setup, called by <ref refid="classiceberg_1_1Loggers_1af1c99e12e428d980dcf180b2219d01b7" kindref="member">Loggers::Load()</ref> before first use. </para>
</briefdescription>
<detaileddescription>
<para>The base implementation applies the &quot;level&quot; property (parsed via LogLevelFromString); an unrecognized value is an InvalidArgument error. The spdlog backend overrides this to also apply &quot;pattern&quot; and then delegates to this base for &quot;level&quot;; <ref refid="classiceberg_1_1CerrLogger" kindref="compound">CerrLogger</ref> uses the base as-is (fixed layout). </para>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="156" column="18" bodyfile="iceberg/logging/logger.h" bodystart="156" bodyend="164"/>
</memberdef>
<memberdef kind="function" id="classiceberg_1_1Logger_1ae94e42dfc0fe122f056c54049f6b751f" prot="public" static="no" const="yes" explicit="no" inline="no" noexcept="yes" virt="pure-virtual">
<type>bool</type>
<definition>virtual bool iceberg::Logger::ShouldLog</definition>
<argsstring>(LogLevel level) const noexcept=0</argsstring>
<name>ShouldLog</name>
<qualifiedname>iceberg::Logger::ShouldLog</qualifiedname>
<reimplementedby refid="classiceberg_1_1CerrLogger_1a558618170d6e63857d529f7679742472">ShouldLog</reimplementedby>
<param>
<type><ref refid="namespaceiceberg_1ab9922ae0d07dc85678a1a86c872e387b" kindref="member">LogLevel</ref></type>
<declname>level</declname>
</param>
<briefdescription>
<para>Cheap check whether a record at <computeroutput>level</computeroutput> would be emitted. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="167" column="16"/>
</memberdef>
<memberdef kind="function" id="classiceberg_1_1Logger_1a2cea7121351c84e8fe25a4fb2a1e52a3" prot="public" static="no" const="no" explicit="no" inline="no" noexcept="yes" virt="pure-virtual">
<type>void</type>
<definition>virtual void iceberg::Logger::Log</definition>
<argsstring>(LogMessage &amp;&amp;message) noexcept=0</argsstring>
<name>Log</name>
<qualifiedname>iceberg::Logger::Log</qualifiedname>
<reimplementedby refid="classiceberg_1_1CerrLogger_1a990162c7376b0511aa6522fe64bf5a8c">Log</reimplementedby>
<param>
<type><ref refid="structiceberg_1_1LogMessage" kindref="compound">LogMessage</ref> &amp;&amp;</type>
<declname>message</declname>
</param>
<briefdescription>
<para>Emit one (already-formatted) record, taking ownership. Must not throw. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="170" column="16"/>
</memberdef>
<memberdef kind="function" id="classiceberg_1_1Logger_1a929efd366d31507b1d0fb0f20cc981ac" prot="public" static="no" const="no" explicit="no" inline="no" noexcept="yes" virt="pure-virtual">
<type>void</type>
<definition>virtual void iceberg::Logger::SetLevel</definition>
<argsstring>(LogLevel level) noexcept=0</argsstring>
<name>SetLevel</name>
<qualifiedname>iceberg::Logger::SetLevel</qualifiedname>
<reimplementedby refid="classiceberg_1_1CerrLogger_1aa53823148c9833d542e1a391acaa0496">SetLevel</reimplementedby>
<param>
<type><ref refid="namespaceiceberg_1ab9922ae0d07dc85678a1a86c872e387b" kindref="member">LogLevel</ref></type>
<declname>level</declname>
</param>
<briefdescription>
<para>Set the minimum level this logger emits. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="173" column="16"/>
</memberdef>
<memberdef kind="function" id="classiceberg_1_1Logger_1a8d7d6a59ecbb0a1ba0ca79cbbb079540" prot="public" static="no" const="yes" explicit="no" inline="no" noexcept="yes" virt="pure-virtual">
<type><ref refid="namespaceiceberg_1ab9922ae0d07dc85678a1a86c872e387b" kindref="member">LogLevel</ref></type>
<definition>virtual LogLevel iceberg::Logger::level</definition>
<argsstring>() const noexcept=0</argsstring>
<name>level</name>
<qualifiedname>iceberg::Logger::level</qualifiedname>
<reimplementedby refid="classiceberg_1_1CerrLogger_1a6f5492fa7db6c8420b615f4d53440476">level</reimplementedby>
<briefdescription>
<para>Return the minimum level this logger emits. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="176" column="20"/>
</memberdef>
<memberdef kind="function" id="classiceberg_1_1Logger_1a2a1b632c1d153e90cf3faef8a29e6419" prot="public" static="no" const="no" explicit="no" inline="yes" noexcept="yes" virt="virtual">
<type>void</type>
<definition>virtual void iceberg::Logger::Flush</definition>
<argsstring>() noexcept</argsstring>
<name>Flush</name>
<qualifiedname>iceberg::Logger::Flush</qualifiedname>
<reimplementedby refid="classiceberg_1_1CerrLogger_1a40deb0defa4c4fd1aaeba3a3980466a3">Flush</reimplementedby>
<briefdescription>
<para>Flush any buffered output. Must not throw; best-effort on the fatal path. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="179" column="16" bodyfile="iceberg/logging/logger.h" bodystart="179" bodyend="179"/>
</memberdef>
<memberdef kind="function" id="classiceberg_1_1Logger_1af869669496ecfff9c7de9b737bdbb404" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="virtual">
<type>bool</type>
<definition>virtual bool iceberg::Logger::IsNoop</definition>
<argsstring>() const</argsstring>
<name>IsNoop</name>
<qualifiedname>iceberg::Logger::IsNoop</qualifiedname>
<briefdescription>
<para>Return true if this logger is a no-op. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="182" column="16" bodyfile="iceberg/logging/logger.h" bodystart="182" bodyend="182"/>
</memberdef>
</sectiondef>
<sectiondef kind="public-static-func">
<memberdef kind="function" id="classiceberg_1_1Logger_1a8f82381c82fb655b0441d2292787630b" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
<type>std::shared_ptr&lt; <ref refid="classiceberg_1_1Logger" kindref="compound">Logger</ref> &gt;</type>
<definition>static std::shared_ptr&lt; Logger &gt; iceberg::Logger::Noop</definition>
<argsstring>()</argsstring>
<name>Noop</name>
<qualifiedname>iceberg::Logger::Noop</qualifiedname>
<briefdescription>
<para>Return a shared, immortal no-op logger singleton. </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/logging/logger.h" line="185" column="26"/>
</memberdef>
</sectiondef>
<briefdescription>
<para>Pluggable logging sink. </para>
</briefdescription>
<detaileddescription>
<para><ref refid="classiceberg_1_1Logger_1ae94e42dfc0fe122f056c54049f6b751f" kindref="member">ShouldLog()</ref> is the single authority for runtime filtering <ndash/> the logging path calls it on every (compile-time-enabled) statement, so level changes by any path take effect immediately. Implementations must be thread-safe and must not throw. They must also obey:<itemizedlist>
<listitem><para>No reentrancy: <ref refid="classiceberg_1_1Logger_1a2cea7121351c84e8fe25a4fb2a1e52a3" kindref="member">Log()</ref>/Flush() must not call the logging API or <ref refid="namespaceiceberg_1ae57e7ff8b112264aeee1c3f1a3699368" kindref="member">GetDefaultLogger()</ref> (UB <ndash/> deadlock with mutex-based sinks).</para>
</listitem><listitem><para><ref refid="classiceberg_1_1Logger_1a8d7d6a59ecbb0a1ba0ca79cbbb079540" kindref="member">level()</ref> is an accessor consistent with ShouldLog (used by SetDefaultLevel and introspection); ShouldLog may implement finer logic than a level compare. </para>
</listitem></itemizedlist>
</para>
</detaileddescription>
<inheritancegraph>
<node id="2">
<label>iceberg::CerrLogger</label>
<link refid="classiceberg_1_1CerrLogger"/>
<childnode refid="1" relation="public-inheritance">
</childnode>
</node>
<node id="1">
<label>iceberg::Logger</label>
<link refid="classiceberg_1_1Logger"/>
</node>
</inheritancegraph>
<location file="iceberg/logging/logger.h" line="146" column="1" bodyfile="iceberg/logging/logger.h" bodystart="146" bodyend="186"/>
<listofallmembers>
<member refid="classiceberg_1_1Logger_1a2a1b632c1d153e90cf3faef8a29e6419" prot="public" virt="virtual"><scope>iceberg::Logger</scope><name>Flush</name></member>
<member refid="classiceberg_1_1Logger_1afb2309f921f8ebb7aa88ada353f37877" prot="public" virt="virtual"><scope>iceberg::Logger</scope><name>Initialize</name></member>
<member refid="classiceberg_1_1Logger_1af869669496ecfff9c7de9b737bdbb404" prot="public" virt="virtual"><scope>iceberg::Logger</scope><name>IsNoop</name></member>
<member refid="classiceberg_1_1Logger_1a8d7d6a59ecbb0a1ba0ca79cbbb079540" prot="public" virt="pure-virtual"><scope>iceberg::Logger</scope><name>level</name></member>
<member refid="classiceberg_1_1Logger_1a2cea7121351c84e8fe25a4fb2a1e52a3" prot="public" virt="pure-virtual"><scope>iceberg::Logger</scope><name>Log</name></member>
<member refid="classiceberg_1_1Logger_1a8f82381c82fb655b0441d2292787630b" prot="public" virt="non-virtual"><scope>iceberg::Logger</scope><name>Noop</name></member>
<member refid="classiceberg_1_1Logger_1a929efd366d31507b1d0fb0f20cc981ac" prot="public" virt="pure-virtual"><scope>iceberg::Logger</scope><name>SetLevel</name></member>
<member refid="classiceberg_1_1Logger_1ae94e42dfc0fe122f056c54049f6b751f" prot="public" virt="pure-virtual"><scope>iceberg::Logger</scope><name>ShouldLog</name></member>
<member refid="classiceberg_1_1Logger_1aadc6a4775fd35424936102100cc0ba2b" prot="public" virt="virtual"><scope>iceberg::Logger</scope><name>~Logger</name></member>
</listofallmembers>
</compounddef>
</doxygen>