<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Design Logger]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte einen Logger schreiben, der in verschiedene Datenquellen (Textdatei, Bildschirmausgabe,...) schreiben kann.</p>
<p>In good old C#/Java würde man ein Interface / eine abstrakte Klasse aufbauen und dann die verschiedenen Logger davon ableiten.</p>
<pre><code>interface ILogger { void Log(int level, string msg); }
</code></pre>
<p>In C++ geht das mit abstrakten Klassen ja genauso. Allerdings wollte ich hier mit Funktoren arbeiten, etwa</p>
<pre><code>Logger log;
log(1, &quot;Übel übel&quot;);
</code></pre>
<p>Nun müssen ja auch hier Informationen zur Datenquelle übergeben werden. Man könnte dazu wiederrum eine abstrakte Klasse LogSource aufbauen, entsprechende Datenquellenausgaben in Derivate kapseln und dem Funktor eine LogSource bei Konstruktion übergeben:</p>
<pre><code>Logger log(FileSource(&quot;rofl.log&quot;));
log(1, &quot;Übel übel&quot;);
</code></pre>
<p>Wäre das &quot;idiomatisches&quot; C++?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317686/design-logger</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 14:20:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317686.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Jun 2013 13:52:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Design Logger on Mon, 17 Jun 2013 13:52:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte einen Logger schreiben, der in verschiedene Datenquellen (Textdatei, Bildschirmausgabe,...) schreiben kann.</p>
<p>In good old C#/Java würde man ein Interface / eine abstrakte Klasse aufbauen und dann die verschiedenen Logger davon ableiten.</p>
<pre><code>interface ILogger { void Log(int level, string msg); }
</code></pre>
<p>In C++ geht das mit abstrakten Klassen ja genauso. Allerdings wollte ich hier mit Funktoren arbeiten, etwa</p>
<pre><code>Logger log;
log(1, &quot;Übel übel&quot;);
</code></pre>
<p>Nun müssen ja auch hier Informationen zur Datenquelle übergeben werden. Man könnte dazu wiederrum eine abstrakte Klasse LogSource aufbauen, entsprechende Datenquellenausgaben in Derivate kapseln und dem Funktor eine LogSource bei Konstruktion übergeben:</p>
<pre><code>Logger log(FileSource(&quot;rofl.log&quot;));
log(1, &quot;Übel übel&quot;);
</code></pre>
<p>Wäre das &quot;idiomatisches&quot; C++?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331813</guid><dc:creator><![CDATA[LogMan0815]]></dc:creator><pubDate>Mon, 17 Jun 2013 13:52:40 GMT</pubDate></item><item><title><![CDATA[Reply to Design Logger on Mon, 17 Jun 2013 14:13:23 GMT]]></title><description><![CDATA[<p>Verpass einfach der Loggerklasse einen std::vector gefüllt mit Stream(buffern) und schreibe in die, Problem solved.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331823</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Mon, 17 Jun 2013 14:13:23 GMT</pubDate></item><item><title><![CDATA[Reply to Design Logger on Mon, 17 Jun 2013 14:16:44 GMT]]></title><description><![CDATA[<p>LogMan0815 schrieb:</p>
<blockquote>
<p>Wäre das &quot;idiomatisches&quot; C++?</p>
</blockquote>
<p>Eher nicht. Globale Variablen sind üblicher.</p>
<p>Bsp: <a href="http://google-glog.googlecode.com/svn/trunk/doc/glog.html" rel="nofollow">http://google-glog.googlecode.com/svn/trunk/doc/glog.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331826</guid><dc:creator><![CDATA[zdfasmsztr]]></dc:creator><pubDate>Mon, 17 Jun 2013 14:16:44 GMT</pubDate></item></channel></rss>