<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrei Gramakov</title>
    <description>The latest articles on DEV Community by Andrei Gramakov (@an-dr).</description>
    <link>https://dev.to/an-dr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F627735%2F5f4f94d6-0197-46e3-89a1-6667565594df.jpeg</url>
      <title>DEV Community: Andrei Gramakov</title>
      <link>https://dev.to/an-dr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/an-dr"/>
    <language>en</language>
    <item>
      <title>microlog 6: New feature – Log Topics</title>
      <dc:creator>Andrei Gramakov</dc:creator>
      <pubDate>Wed, 18 Sep 2024 20:18:30 +0000</pubDate>
      <link>https://dev.to/an-dr/microlog-6-new-feature-log-topics-1ioh</link>
      <guid>https://dev.to/an-dr/microlog-6-new-feature-log-topics-1ioh</guid>
      <description>&lt;p&gt;Hi! &lt;/p&gt;

&lt;p&gt;I continue developing my logging library. I’m not getting much positive response from the internet, but the developing itself is too fun, so I continue adding new features (and use them in my other projects 🙂)&lt;/p&gt;

&lt;p&gt;This time I added &lt;strong&gt;log topics&lt;/strong&gt;. Each log message can have a topic, and you can control whether to print messages from each topic. It does not pollute the output with unnecessary messages and is very handy during debugging. Here is an example from a testing desktop application&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8e4sykz3dhv99ph4uuhi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8e4sykz3dhv99ph4uuhi.png" alt="demo1" width="800" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here is a real-life example from my Raspberry Pi Pico-based &lt;a href="https://agramakov.me/blog/wp-admin/edit.php?category_name=remotion" rel="noopener noreferrer"&gt;remotion&lt;/a&gt; project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ful9cam8xynsid15u31cp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ful9cam8xynsid15u31cp.png" alt="demo2" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As usual, here is the link to the repository:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/an-dr/microlog" rel="noopener noreferrer"&gt;https://github.com/an-dr/microlog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this release, I’ve put extra effort into the README file so you can find examples of usage for every feature. All the functions are documented in the &lt;a href="https://github.com/an-dr/microlog/blob/main/include/ulog.h" rel="noopener noreferrer"&gt;header file&lt;/a&gt;, but if you have any questions or proposals, drop me a message, and I’ll try to respond. &lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>microlog</category>
      <category>logging</category>
      <category>library</category>
      <category>c</category>
    </item>
    <item>
      <title>New Release: microlog 5.1.0</title>
      <dc:creator>Andrei Gramakov</dc:creator>
      <pubDate>Sun, 15 Sep 2024 13:18:50 +0000</pubDate>
      <link>https://dev.to/an-dr/new-release-microlog-510-275n</link>
      <guid>https://dev.to/an-dr/new-release-microlog-510-275n</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwsyx7u7jzng17283y0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwsyx7u7jzng17283y0d.png" alt="preview" width="557" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a new version of microlog with improved custom callback handling.&lt;/p&gt;

&lt;p&gt;It is not always simple to redirect &lt;code&gt;printf&lt;/code&gt; output on some platforms. For this in the last release, I’ve added a new &lt;code&gt;ulog_add_callback&lt;/code&gt; function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;arduino_callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ulog_Event&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;arg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;ulog_event_to_cstr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;...&lt;/span&gt;

&lt;span class="n"&gt;ulog_add_callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arduino_callback&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LOG_INFO&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;microlog&lt;/strong&gt; is a C-based thread-save portable and customizable logging library, aiming to provide powerful functionality while keeping the usage intuitive and the learning curve shallow. &lt;strong&gt;microlog&lt;/strong&gt; can be quickly integrated to any project by copying 2 files or as a meson/cmake subproject.&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://github.com/an-dr/microlog?tab=readme-ov-file#ulog_event_to_cstrulog_event-ev-char-out-size_t-out_size" rel="noopener noreferrer"&gt;https://github.com/an-dr/microlog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microlog</category>
      <category>library</category>
      <category>logging</category>
      <category>release</category>
    </item>
  </channel>
</rss>
