Files

1067 lines
56 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Classes Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">CleanroomLogger Docs</a> (100% documented)</p>
<p class="header-right"><a href="https://github.com/emaloney/CleanroomLogger"><img src="img/gh.png"/>View on GitHub</a></p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">CleanroomLogger Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/BasicLogConfiguration.html">BasicLogConfiguration</a>
</li>
<li class="nav-group-task">
<a href="Classes/BufferedLogEntryMessageRecorder.html">BufferedLogEntryMessageRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/BufferedLogEntryRecorder.html">BufferedLogEntryRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/BufferedLogRecorder.html">BufferedLogRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/BufferedMessageRecorder.html">BufferedMessageRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/ConcatenatingLogFormatter.html">ConcatenatingLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Classes/ConsoleLogConfiguration.html">ConsoleLogConfiguration</a>
</li>
<li class="nav-group-task">
<a href="Classes/ConsoleLogConfiguration/StandardStreamsMode.html">– StandardStreamsMode</a>
</li>
<li class="nav-group-task">
<a href="Classes/FieldBasedLogFormatter.html">FieldBasedLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Classes/FieldBasedLogFormatter/Field.html">– Field</a>
</li>
<li class="nav-group-task">
<a href="Classes/FileLogRecorder.html">FileLogRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/LogReceptacle.html">LogReceptacle</a>
</li>
<li class="nav-group-task">
<a href="Classes/LogRecorderBase.html">LogRecorderBase</a>
</li>
<li class="nav-group-task">
<a href="Classes/OutputStreamLogRecorder.html">OutputStreamLogRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/ParsableLogFormatter.html">ParsableLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Classes/ReadableLogFormatter.html">ReadableLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Classes/RotatingLogFileConfiguration.html">RotatingLogFileConfiguration</a>
</li>
<li class="nav-group-task">
<a href="Classes/RotatingLogFileRecorder.html">RotatingLogFileRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/StandardErrorLogRecorder.html">StandardErrorLogRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/StandardLogFormatter.html">StandardLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Classes/StandardOutputLogRecorder.html">StandardOutputLogRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/StandardStreamsLogRecorder.html">StandardStreamsLogRecorder</a>
</li>
<li class="nav-group-task">
<a href="Classes/XcodeLogConfiguration.html">XcodeLogConfiguration</a>
</li>
<li class="nav-group-task">
<a href="Classes/XcodeLogFormatter.html">XcodeLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Classes/XcodeTraceLogFormatter.html">XcodeTraceLogFormatter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Enums.html">Enums</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Enums/CallingThreadStyle.html">CallingThreadStyle</a>
</li>
<li class="nav-group-task">
<a href="Enums/DelimiterStyle.html">DelimiterStyle</a>
</li>
<li class="nav-group-task">
<a href="Enums/LogSeverity.html">LogSeverity</a>
</li>
<li class="nav-group-task">
<a href="Enums/OSLogTypeTranslator.html">OSLogTypeTranslator</a>
</li>
<li class="nav-group-task">
<a href="Enums/SeverityStyle.html">SeverityStyle</a>
</li>
<li class="nav-group-task">
<a href="Enums/SeverityStyle/TextRepresentation.html">– TextRepresentation</a>
</li>
<li class="nav-group-task">
<a href="Enums/TimestampStyle.html">TimestampStyle</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/LogConfiguration.html">LogConfiguration</a>
</li>
<li class="nav-group-task">
<a href="Protocols/LogFilter.html">LogFilter</a>
</li>
<li class="nav-group-task">
<a href="Protocols/LogFormatter.html">LogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Protocols/LogRecorder.html">LogRecorder</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Structs.html">Structs</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Structs/CallSiteLogFormatter.html">CallSiteLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/CallingThreadLogFormatter.html">CallingThreadLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/DelimiterLogFormatter.html">DelimiterLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/LiteralLogFormatter.html">LiteralLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/Log.html">Log</a>
</li>
<li class="nav-group-task">
<a href="Structs/LogChannel.html">LogChannel</a>
</li>
<li class="nav-group-task">
<a href="Structs/LogEntry.html">LogEntry</a>
</li>
<li class="nav-group-task">
<a href="Structs/LogEntry/Payload.html">– Payload</a>
</li>
<li class="nav-group-task">
<a href="Structs/LogSeverityFilter.html">LogSeverityFilter</a>
</li>
<li class="nav-group-task">
<a href="Structs/OSLogRecorder.html">OSLogRecorder</a>
</li>
<li class="nav-group-task">
<a href="Structs/PayloadLogFormatter.html">PayloadLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/PayloadMessageLogFormatter.html">PayloadMessageLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/PayloadTraceLogFormatter.html">PayloadTraceLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/PayloadValueLogFormatter.html">PayloadValueLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/ProcessIDLogFormatter.html">ProcessIDLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/ProcessNameLogFormatter.html">ProcessNameLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/SeverityLogFormatter.html">SeverityLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/StackFrameLogFormatter.html">StackFrameLogFormatter</a>
</li>
<li class="nav-group-task">
<a href="Structs/TimestampLogFormatter.html">TimestampLogFormatter</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Classes</h1>
<p>The following classes are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger20ReadableLogFormatterC"></a>
<a name="//apple_ref/swift/Class/ReadableLogFormatter" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger20ReadableLogFormatterC">ReadableLogFormatter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogFormatter.html">LogFormatter</a></code> configured to be ideal for writing human-readable log files.</p>
<p>By default, this formatter:</p>
<ul>
<li>Uses <code>.default</code> as the <code><a href="Enums/TimestampStyle.html">TimestampStyle</a></code></li>
<li>Uses a custom <code><a href="Enums/SeverityStyle.html">SeverityStyle</a></code> that pads the capitalized severity name</li>
<li>Uses <code>.hex</code> as the <code><a href="Enums/CallingThreadStyle.html">CallingThreadStyle</a></code></li>
<li>Uses default field separator delimiters</li>
<li>Outputs the source code filename and line number of the call site</li>
</ul>
<p>Each of these settings can be overridden during instantiation.</p>
<a href="Classes/ReadableLogFormatter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">ReadableLogFormatter</span><span class="p">:</span> <span class="kt"><a href="Classes/StandardLogFormatter.html">StandardLogFormatter</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger22XcodeTraceLogFormatterC"></a>
<a name="//apple_ref/swift/Class/XcodeTraceLogFormatter" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger22XcodeTraceLogFormatterC">XcodeTraceLogFormatter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogFormatter.html">LogFormatter</a></code> that outputs Xcode-bound trace information for each
<code><a href="Structs/LogEntry.html">LogEntry</a></code> that has a <code>Payload</code> of <code>.trace</code>.</p>
<a href="Classes/XcodeTraceLogFormatter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">XcodeTraceLogFormatter</span><span class="p">:</span> <span class="kt"><a href="Classes/FieldBasedLogFormatter.html">FieldBasedLogFormatter</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger21XcodeLogConfigurationC"></a>
<a name="//apple_ref/swift/Class/XcodeLogConfiguration" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger21XcodeLogConfigurationC">XcodeLogConfiguration</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogConfiguration.html">LogConfiguration</a></code> optimized for use when running within Xcode.</p>
<a href="Classes/XcodeLogConfiguration.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">XcodeLogConfiguration</span><span class="p">:</span> <span class="kt"><a href="Classes/ConsoleLogConfiguration.html">ConsoleLogConfiguration</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger23RotatingLogFileRecorderC"></a>
<a name="//apple_ref/swift/Class/RotatingLogFileRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger23RotatingLogFileRecorderC">RotatingLogFileRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogRecorder.html">LogRecorder</a></code> implementation that maintains a set of daily rotating log
files, kept for a user-specified number of days.</p>
<div class="aside aside-important">
<p class="aside-title">Important</p>
A <code>RotatingLogFileRecorder</code> instance assumes full control over
the log directory specified by its <code>directoryPath</code> property. Please see the
initializer documentation for details.
</div>
<a href="Classes/RotatingLogFileRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">RotatingLogFileRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/LogRecorderBase.html">LogRecorderBase</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger25StandardOutputLogRecorderC"></a>
<a name="//apple_ref/swift/Class/StandardOutputLogRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger25StandardOutputLogRecorderC">StandardOutputLogRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>StandardOutputLogRecorder</code> is an <code><a href="Classes/OutputStreamLogRecorder.html">OutputStreamLogRecorder</a></code> that writes
log messages to the standard output stream (<q>`stdout`</q>) of the running
process.</p>
<a href="Classes/StandardOutputLogRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">StandardOutputLogRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/OutputStreamLogRecorder.html">OutputStreamLogRecorder</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger28RotatingLogFileConfigurationC"></a>
<a name="//apple_ref/swift/Class/RotatingLogFileConfiguration" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger28RotatingLogFileConfigurationC">RotatingLogFileConfiguration</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogConfiguration.html">LogConfiguration</a></code> that uses an underlying <code><a href="Classes/RotatingLogFileRecorder.html">RotatingLogFileRecorder</a></code> to
maintain a directory of log files that are rotated on a daily basis.</p>
<a href="Classes/RotatingLogFileConfiguration.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">RotatingLogFileConfiguration</span><span class="p">:</span> <span class="kt"><a href="Classes/BasicLogConfiguration.html">BasicLogConfiguration</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger23OutputStreamLogRecorderC"></a>
<a name="//apple_ref/swift/Class/OutputStreamLogRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger23OutputStreamLogRecorderC">OutputStreamLogRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>OutputStreamLogRecorder</code> logs messages by writing to the standard
output stream of the running process.</p>
<a href="Classes/OutputStreamLogRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">OutputStreamLogRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/LogRecorderBase.html">LogRecorderBase</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger21BasicLogConfigurationC"></a>
<a name="//apple_ref/swift/Class/BasicLogConfiguration" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger21BasicLogConfigurationC">BasicLogConfiguration</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>In case the name didn&rsquo;t give it away, the <code>BasicLogConfiguration</code> class
provides a basic implementation of the <code><a href="Protocols/LogConfiguration.html">LogConfiguration</a></code> protocol.</p>
<a href="Classes/BasicLogConfiguration.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">BasicLogConfiguration</span><span class="p">:</span> <span class="kt"><a href="Protocols/LogConfiguration.html">LogConfiguration</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger19BufferedLogRecorderC"></a>
<a name="//apple_ref/swift/Class/BufferedLogRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger19BufferedLogRecorderC">BufferedLogRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>BufferedLogRecorder</code> is a generic <code><a href="Protocols/LogRecorder.html">LogRecorder</a></code> that buffers the log
messages passed to its <code>record()</code> function.</p>
<p>Construction requires a <code>createBufferItem</code> function, which is responsible
for converting the <code><a href="Structs/LogEntry.html">LogEntry</a></code> and formatted message <code>String</code> into the
generic <code>BufferItem</code> type.</p>
<p>Three specific subclasses are also provided which will buffer a different
<code>BufferItem</code> type for each call to <code>record()</code>:</p>
<ul>
<li><code><a href="Classes/BufferedMessageRecorder.html">BufferedMessageRecorder</a></code> stores <code>String</code>s containing the formatted log
message.</li>
<li><code><a href="Classes/BufferedLogEntryRecorder.html">BufferedLogEntryRecorder</a></code> stores the <code><a href="Structs/LogEntry.html">LogEntry</a></code> values passed to <code>record()</code>.</li>
<li><code><a href="Classes/BufferedLogEntryMessageRecorder.html">BufferedLogEntryMessageRecorder</a></code> stores a <code>(LogEntry, String)</code> tuple
containing the <code><a href="Structs/LogEntry.html">LogEntry</a></code> and formatted log message.</li>
</ul>
<a href="Classes/BufferedLogRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">BufferedLogRecorder</span><span class="o">&lt;</span><span class="kt">BufferItem</span><span class="o">&gt;</span><span class="p">:</span> <span class="kt"><a href="Classes/LogRecorderBase.html">LogRecorderBase</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger23BufferedMessageRecorderC"></a>
<a name="//apple_ref/swift/Class/BufferedMessageRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger23BufferedMessageRecorderC">BufferedMessageRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>BufferedMessageRecorder</code> buffers the formatted log messages passed to
its <code>record()</code> function.</p>
<a href="Classes/BufferedMessageRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">BufferedMessageRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/BufferedLogRecorder.html">BufferedLogRecorder</a></span><span class="o">&lt;</span><span class="kt">String</span><span class="o">&gt;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger24BufferedLogEntryRecorderC"></a>
<a name="//apple_ref/swift/Class/BufferedLogEntryRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger24BufferedLogEntryRecorderC">BufferedLogEntryRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>BufferedLogEntryRecorder</code> buffers each <code><a href="Structs/LogEntry.html">LogEntry</a></code> passed to its
<code>record()</code> function.</p>
<a href="Classes/BufferedLogEntryRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">BufferedLogEntryRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/BufferedLogRecorder.html">BufferedLogRecorder</a></span><span class="o">&lt;</span><span class="kt"><a href="Structs/LogEntry.html">LogEntry</a></span><span class="o">&gt;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger31BufferedLogEntryMessageRecorderC"></a>
<a name="//apple_ref/swift/Class/BufferedLogEntryMessageRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger31BufferedLogEntryMessageRecorderC">BufferedLogEntryMessageRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>BufferedLogEntryMessageRecorder</code> buffers each <code><a href="Structs/LogEntry.html">LogEntry</a></code> and formatted
message passed to its <code>record()</code> function.</p>
<a href="Classes/BufferedLogEntryMessageRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">BufferedLogEntryMessageRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/BufferedLogRecorder.html">BufferedLogRecorder</a></span><span class="o">&lt;</span><span class="p">(</span><span class="kt"><a href="Structs/LogEntry.html">LogEntry</a></span><span class="p">,</span> <span class="kt">String</span><span class="p">)</span><span class="o">&gt;</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger15FileLogRecorderC"></a>
<a name="//apple_ref/swift/Class/FileLogRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger15FileLogRecorderC">FileLogRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogRecorder.html">LogRecorder</a></code> implementation that appends log entries to a file.</p>
<div class="aside aside-note">
<p class="aside-title">Note</p>
<code>FileLogRecorder</code> is a simple log appender that provides no mechanism
for file rotation or truncation. Unless you manually manage the log file when
a <code>FileLogRecorder</code> doesn&rsquo;t have it open, you will end up with an ever-growing
file. Use a <code><a href="Classes/RotatingLogFileRecorder.html">RotatingLogFileRecorder</a></code> instead if you&rsquo;d rather not have to
concern yourself with such details.
</div>
<a href="Classes/FileLogRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">FileLogRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/LogRecorderBase.html">LogRecorderBase</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger22FieldBasedLogFormatterC"></a>
<a name="//apple_ref/swift/Class/FieldBasedLogFormatter" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger22FieldBasedLogFormatterC">FieldBasedLogFormatter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>FieldBasedLogFormatter</code> provides a simple interface for constructing
a customized <code><a href="Protocols/LogFormatter.html">LogFormatter</a></code> by specifying different <em>fields</em>.</p>
<p>Let&rsquo;s say you wanted to construct a <code><a href="Protocols/LogFormatter.html">LogFormatter</a></code> that outputs the following
fields separated by tabs:</p>
<ul>
<li>The <code><a href="Structs/LogEntry.html">LogEntry</a></code>&lsquo;s <code>timestamp</code> property as a UNIX time value</li>
<li>The <code>severity</code> of the <code><a href="Structs/LogEntry.html">LogEntry</a></code> as a numeric value</li>
<li>The <code>Payload</code> of the <code><a href="Structs/LogEntry.html">LogEntry</a></code></li>
</ul>
<p>You could do this by constructing a <code>FieldBasedLogFormatter</code> as follows:</p>
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">formatter</span> <span class="o">=</span> <span class="kt">FieldBasedLogFormatter</span><span class="p">(</span><span class="nv">fields</span><span class="p">:</span> <span class="p">[</span><span class="o">.</span><span class="nf">timestamp</span><span class="p">(</span><span class="o">.</span><span class="n">unix</span><span class="p">),</span>
<span class="o">.</span><span class="nf">delimiter</span><span class="p">(</span><span class="o">.</span><span class="n">tab</span><span class="p">),</span>
<span class="o">.</span><span class="nf">severity</span><span class="p">(</span><span class="o">.</span><span class="n">numeric</span><span class="p">),</span>
<span class="o">.</span><span class="nf">delimiter</span><span class="p">(</span><span class="o">.</span><span class="n">tab</span><span class="p">),</span>
<span class="o">.</span><span class="n">payload</span><span class="p">])</span>
</code></pre>
<a href="Classes/FieldBasedLogFormatter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">FieldBasedLogFormatter</span><span class="p">:</span> <span class="kt"><a href="Classes/ConcatenatingLogFormatter.html">ConcatenatingLogFormatter</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger13LogReceptacleC"></a>
<a name="//apple_ref/swift/Class/LogReceptacle" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger13LogReceptacleC">LogReceptacle</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p><code>LogReceptacle</code>s provide the low-level interface for accepting log messages.</p>
<p>Although you could use a <code>LogReceptacle</code> directly to perform all logging
functions, the <code><a href="Structs/Log.html">Log</a></code> implementation provides a higher-level interface that&rsquo;s
more convenient to use within your code.</p>
<a href="Classes/LogReceptacle.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">LogReceptacle</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger25ConcatenatingLogFormatterC"></a>
<a name="//apple_ref/swift/Class/ConcatenatingLogFormatter" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger25ConcatenatingLogFormatterC">ConcatenatingLogFormatter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>ConcatenatingLogFormatter</code> lets you combine the output of multiple
<code><a href="Protocols/LogFormatter.html">LogFormatter</a></code>s by concatenating their output and returning the result.</p>
<a href="Classes/ConcatenatingLogFormatter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">ConcatenatingLogFormatter</span><span class="p">:</span> <span class="kt"><a href="Protocols/LogFormatter.html">LogFormatter</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger23ConsoleLogConfigurationC"></a>
<a name="//apple_ref/swift/Class/ConsoleLogConfiguration" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger23ConsoleLogConfigurationC">ConsoleLogConfiguration</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A standard <code><a href="Protocols/LogConfiguration.html">LogConfiguration</a></code> that, by default, uses the <code>os_log()</code> function
(via the <code><a href="Structs/OSLogRecorder.html">OSLogRecorder</a></code>), which is only available as of iOS 10.0, macOS 10.12,
tvOS 10.0, and watchOS 3.0.</p>
<p>If <code>os_log()</code> is not available, or if the <code>StandardLogConfiguration</code> is
configured to bypass it, log messages will be written to either the <code>stdout</code>
or <code>stderr</code> output stream of the running process.</p>
<a href="Classes/ConsoleLogConfiguration.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">ConsoleLogConfiguration</span><span class="p">:</span> <span class="kt"><a href="Classes/BasicLogConfiguration.html">BasicLogConfiguration</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger26StandardStreamsLogRecorderC"></a>
<a name="//apple_ref/swift/Class/StandardStreamsLogRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger26StandardStreamsLogRecorderC">StandardStreamsLogRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>StandardStreamsLogRecorder</code> is a <code><a href="Protocols/LogRecorder.html">LogRecorder</a></code> that writes log messages
to either the standard output stream (<q>`stdout`</q>) or the standard error stream
(<q>`stderr`</q>) of the running process.</p>
<p>Messages are directed to the appropriate stream depending on the <code>severity</code>
property of the <code><a href="Structs/LogEntry.html">LogEntry</a></code> being recorded.</p>
<p>Messages having a severity of <code>.verbose</code>, <code>.debug</code> and <code>.info</code> will be
directed to <code>stdout</code>, while those with a severity of <code>.warning</code> and <code>.error</code>
are directed to <code>stderr</code>.</p>
<a href="Classes/StandardStreamsLogRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">StandardStreamsLogRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/LogRecorderBase.html">LogRecorderBase</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger15LogRecorderBaseC"></a>
<a name="//apple_ref/swift/Class/LogRecorderBase" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger15LogRecorderBaseC">LogRecorderBase</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A partial implementation of the <code><a href="Protocols/LogRecorder.html">LogRecorder</a></code> protocol.</p>
<a href="Classes/LogRecorderBase.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">LogRecorderBase</span><span class="p">:</span> <span class="kt"><a href="Protocols/LogRecorder.html">LogRecorder</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger24StandardErrorLogRecorderC"></a>
<a name="//apple_ref/swift/Class/StandardErrorLogRecorder" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger24StandardErrorLogRecorderC">StandardErrorLogRecorder</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The <code>StandardErrorLogRecorder</code> is an <code><a href="Classes/OutputStreamLogRecorder.html">OutputStreamLogRecorder</a></code> that writes
log messages to the standard error stream (<q>`stderr`</q>) of the running
process.</p>
<a href="Classes/StandardErrorLogRecorder.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">StandardErrorLogRecorder</span><span class="p">:</span> <span class="kt"><a href="Classes/OutputStreamLogRecorder.html">OutputStreamLogRecorder</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger20StandardLogFormatterC"></a>
<a name="//apple_ref/swift/Class/StandardLogFormatter" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger20StandardLogFormatterC">StandardLogFormatter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A standard <code><a href="Protocols/LogFormatter.html">LogFormatter</a></code> that provides some common customization points.</p>
<a href="Classes/StandardLogFormatter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">StandardLogFormatter</span><span class="p">:</span> <span class="kt"><a href="Classes/FieldBasedLogFormatter.html">FieldBasedLogFormatter</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger20ParsableLogFormatterC"></a>
<a name="//apple_ref/swift/Class/ParsableLogFormatter" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger20ParsableLogFormatterC">ParsableLogFormatter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogFormatter.html">LogFormatter</a></code> configured to be ideal for writing machine-parsable log files.</p>
<p>By default, this formatter:</p>
<ul>
<li>Uses <code>.unix</code> as the <code><a href="Enums/TimestampStyle.html">TimestampStyle</a></code></li>
<li>Uses <code>.numeric</code> as the <code><a href="Enums/SeverityStyle.html">SeverityStyle</a></code></li>
<li>Uses <code>.hex</code> as the <code><a href="Enums/CallingThreadStyle.html">CallingThreadStyle</a></code></li>
<li>Uses <code>.tab</code> as the <code><a href="Enums/DelimiterStyle.html">DelimiterStyle</a></code></li>
<li>Outputs the source code filename and line number of the call site</li>
</ul>
<p>Each of these settings can be overridden during instantiation.</p>
<a href="Classes/ParsableLogFormatter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="n">open</span> <span class="kd">class</span> <span class="kt">ParsableLogFormatter</span><span class="p">:</span> <span class="kt"><a href="Classes/StandardLogFormatter.html">StandardLogFormatter</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:15CleanroomLogger17XcodeLogFormatterC"></a>
<a name="//apple_ref/swift/Class/XcodeLogFormatter" class="dashAnchor"></a>
<a class="token" href="#/s:15CleanroomLogger17XcodeLogFormatterC">XcodeLogFormatter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A <code><a href="Protocols/LogFormatter.html">LogFormatter</a></code> ideal for use within Xcode. This format is not well-suited
for parsing.</p>
<a href="Classes/XcodeLogFormatter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">XcodeLogFormatter</span><span class="p">:</span> <span class="kt"><a href="Protocols/LogFormatter.html">LogFormatter</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2015-2017 <a class="link" href="http://tech.gilt.com/" target="_blank" rel="external">Gilt Groupe</a></p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>