This commit is contained in:
InsanusMokrassar
2023-06-10 12:10:19 +00:00
parent 5e1d8c40b4
commit 3dc59cce2e
35 changed files with 2531 additions and 628 deletions

View File

@@ -259,20 +259,13 @@
<li class="md-tabs__item">
<a href="../krontab/introduction/including-in-project.html" class="md-tabs__link">
<a href="../krontab/index.html" class="md-tabs__link">
Krontab
</a>
</li>
@@ -898,15 +891,25 @@
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
Krontab
<span class="md-nav__icon md-icon"></span>
</label>
<div class="md-nav__link md-nav__link--index ">
<a href="../krontab/index.html">Krontab</a>
<label for="__nav_3">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
@@ -916,6 +919,8 @@
<ul class="md-nav__list" data-md-scrollfix>
@@ -928,7 +933,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
@@ -940,13 +945,13 @@
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
Introduction
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1">
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
Introduction
</label>
@@ -1014,7 +1019,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
@@ -1024,13 +1029,13 @@
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
Describing
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
Describing
</label>
@@ -1180,6 +1185,68 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#how-to-use" class="md-nav__link">
How to use
</a>
<nav class="md-nav" aria-label="How to use">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#fast-travel" class="md-nav__link">
Fast-travel
</a>
</li>
<li class="md-nav__item">
<a href="#a-little-bit-deeper" class="md-nav__link">
A little bit deeper
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#installation" class="md-nav__link">
Installation
</a>
<nav class="md-nav" aria-label="Installation">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#gradle" class="md-nav__link">
Gradle
</a>
</li>
<li class="md-nav__item">
<a href="#maven" class="md-nav__link">
Maven
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
@@ -1210,7 +1277,73 @@
<h1 id="kslog">KSLog<a class="headerlink" href="#kslog" title="Permanent link">&para;</a></h1>
<p><a href="https://github.com/InsanusMokrassar/kslog">KSLog</a> is a simple multiplatform tool for native logging.</p>
<p>It is simple and easy-to-use tool for logging on the most popular platforms in Kotlin Multiplatform:</p>
<p><img alt="JVM" src="https://img.shields.io/badge/JVM-red?style=for-the-badge&amp;logo=openjdk&amp;logoColor=white" />
<img alt="Android" src="https://img.shields.io/badge/Android-green?style=for-the-badge&amp;logo=android&amp;logoColor=white" />
<img alt="Js" src="https://img.shields.io/badge/JavaScript-323330?style=for-the-badge&amp;logo=javascript&amp;logoColor=F7DF1E" />
<img alt="ARM x64" src="https://img.shields.io/badge/ARMx64-0091BD?style=for-the-badge&amp;logo=arm&amp;logoColor=F7DF1E" />
<img alt="ARM x32" src="https://img.shields.io/badge/ARMx32-0091BD?style=for-the-badge&amp;logo=arm&amp;logoColor=F7DF1E" />
<img alt="Linux x64" src="https://img.shields.io/badge/Linuxx64-FCC624?style=for-the-badge&amp;logo=linux&amp;logoColor=F7DF1E" /></p>
<p><a href="https://insanusmokrassar.github.io/KSLog/"><img alt="KDocs" src="https://img.shields.io/badge/KDocs-323330?style=for-the-badge&amp;logo=Kotlin&amp;logoColor=7F52FF" /></a></p>
<p>By default, KSLog is using built-in tools for logging on each supported platform:</p>
<ul>
<li><code>java.util.logging.Logger</code> for <code>JVM</code></li>
<li><code>android.util.Log</code> for <code>Android</code></li>
<li><code>Console</code> for <code>JS</code></li>
</ul>
<p>But you always may create your logger and customize as you wish:</p>
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">default</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">KSLog</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">level</span><span class="p">:</span><span class="w"> </span><span class="n">LogLevel</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">:</span><span class="w"> </span><span class="kt">String?</span><span class="p">,</span><span class="w"> </span><span class="n">message</span><span class="p">:</span><span class="w"> </span><span class="kt">Any</span><span class="p">,</span><span class="w"> </span><span class="n">throwable</span><span class="p">:</span><span class="w"> </span><span class="n">Throwable? </span><span class="o">-&gt;</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span><span class="c1">// do your logging</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="p">}</span>
</span></code></pre></div>
<p><strong>This library also supports native targets in experimental mode. By default, all native targets will use simple printing in the console</strong></p>
<h2 id="how-to-use">How to use<a class="headerlink" href="#how-to-use" title="Permanent link">&para;</a></h2>
<h3 id="fast-travel">Fast-travel<a class="headerlink" href="#fast-travel" title="Permanent link">&para;</a></h3>
<p>Just use some boring extensions like:</p>
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">i</span><span class="p">(</span><span class="s">&quot;Some message&quot;</span><span class="p">)</span>
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="c1">// OR</span>
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">i</span><span class="p">(</span><span class="s">&quot;Some tag&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Some message&quot;</span><span class="p">)</span>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="c1">// OR</span>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">i</span><span class="p">(</span><span class="s">&quot;Some tag&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Some message&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IllegalArgumentException</span><span class="p">(</span><span class="s">&quot;So, that is exception :)&quot;</span><span class="p">))</span>
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="c1">// OR</span>
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">i</span><span class="p">(</span><span class="s">&quot;Some optional tag&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">Exception</span><span class="p">(</span><span class="s">&quot;Optional&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Lazy inited message&quot;</span><span class="w"> </span><span class="p">}</span>
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="c1">// OR</span>
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">iS</span><span class="p">(</span><span class="s">&quot;Some optional tag&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">Exception</span><span class="p">(</span><span class="s">&quot;Optional&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s">&quot;Lazy inited message for suspendable calculation of text&quot;</span><span class="w"> </span><span class="p">}</span>
</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="c1">// OR EVEN</span>
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">l</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="na">INFO</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Some tag&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Some message&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IllegalArgumentException</span><span class="p">(</span><span class="s">&quot;So, that is exception :)&quot;</span><span class="p">))</span>
</span><span id="__span-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="c1">// OR</span>
</span><span id="__span-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="n">KSLog</span><span class="p">.</span><span class="na">l</span><span class="p">(</span><span class="n">LogLevel</span><span class="p">.</span><span class="na">INFO</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Some optional tag&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">IllegalArgumentException</span><span class="p">(</span><span class="s">&quot;So, that is exception :)&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s">&quot;And lazily inited message&quot;</span><span class="w"> </span><span class="p">}</span>
</span></code></pre></div>
<h3 id="a-little-bit-deeper">A little bit deeper<a class="headerlink" href="#a-little-bit-deeper" title="Permanent link">&para;</a></h3>
<p>There are several important &ldquo;terms&rdquo; in context of this library:</p>
<ul>
<li>Default logger (available via <code>KSLog.default</code> or simply <code>KSLog</code>)</li>
<li>Local logger (can be created via <code>KSLog</code> functions and passed anywhere as <code>KSLog</code>)</li>
<li>Logging shortcuts like <code>KSLog.i</code>/<code>KSLog.info</code></li>
<li>Built-in extension <code>Any.logger</code> which allow you to create logger binded to the default with the tag based on the class of receiver<ul>
<li><strong>Be careful with the receivers: if you will use some extension like <code>apply</code>, the receiver will be different with your class inside of that <code>apply</code></strong></li>
</ul>
</li>
</ul>
<p>Every logging extension (like <code>KSLog.i</code>) have its analog with lazy inited message text and the same one with suffix <code>S</code> (like <code>KSLog.iS</code>) for the suspendable message calculation.</p>
<p>Default logger can be created by passing <code>defaultTag</code> and one of variants log level filters: set or minimal loggable level. In <code>JVM</code> you also may setup any logger as base logger for default realizations of <code>KSLog</code>. Besides, you may use your own callback (on <strong>any target platform</strong>) as output of logging:</p>
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="kd">val</span><span class="w"> </span><span class="nv">logger</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">KSLog</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">logLevel</span><span class="p">,</span><span class="w"> </span><span class="n">optionalTag</span><span class="p">,</span><span class="w"> </span><span class="n">message</span><span class="p">,</span><span class="w"> </span><span class="n">optionalThrowable</span><span class="w"> </span><span class="o">-&gt;</span>
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">&quot;[</span><span class="si">$</span><span class="n">logLevel</span><span class="s">] </span><span class="si">$</span><span class="n">optionalTag</span><span class="s"> - </span><span class="si">$</span><span class="n">message</span><span class="s">: </span><span class="si">$</span><span class="n">optionalThrowable</span><span class="s">.stackTraceToString()&quot;</span><span class="p">)</span>
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="p">}</span>
</span></code></pre></div>
<p>In the example above we will take the <code>logger</code> which will just print incoming data as common output.</p>
<h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">&para;</a></h2>
<p><a href="https://maven-badges.herokuapp.com/maven-central/dev.inmo/kslog"><img alt="Maven Central" src="https://maven-badges.herokuapp.com/maven-central/dev.inmo/kslog/badge.svg" /></a></p>
<h3 id="gradle">Gradle<a class="headerlink" href="#gradle" title="Permanent link">&para;</a></h3>
<div class="language-groovy highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="n">implementation</span><span class="w"> </span><span class="s2">&quot;dev.inmo:kslog:$kslog_version&quot;</span>
</span></code></pre></div>
<h3 id="maven">Maven<a class="headerlink" href="#maven" title="Permanent link">&para;</a></h3>
<div class="language-xml highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="nt">&lt;dependency&gt;</span>
</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="nt">&lt;groupId&gt;</span>dev.inmo<span class="nt">&lt;/groupId&gt;</span>
</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>kslog<span class="nt">&lt;/artifactId&gt;</span>
</span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="nt">&lt;version&gt;</span>${kslog_version}<span class="nt">&lt;/version&gt;</span>
</span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="nt">&lt;/dependency&gt;</span>
</span></code></pre></div>

View File

@@ -257,20 +257,13 @@
<li class="md-tabs__item">
<a href="../krontab/introduction/including-in-project.html" class="md-tabs__link">
<a href="../krontab/index.html" class="md-tabs__link">
Krontab
</a>
</li>
@@ -896,15 +889,25 @@
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
Krontab
<span class="md-nav__icon md-icon"></span>
</label>
<div class="md-nav__link md-nav__link--index ">
<a href="../krontab/index.html">Krontab</a>
<label for="__nav_3">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
@@ -914,6 +917,8 @@
<ul class="md-nav__list" data-md-scrollfix>
@@ -926,7 +931,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
@@ -938,13 +943,13 @@
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
Introduction
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1">
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
Introduction
</label>
@@ -1012,7 +1017,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
@@ -1022,13 +1027,13 @@
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
Describing
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
Describing
</label>

View File

@@ -259,20 +259,13 @@
<li class="md-tabs__item">
<a href="../krontab/introduction/including-in-project.html" class="md-tabs__link">
<a href="../krontab/index.html" class="md-tabs__link">
Krontab
</a>
</li>
@@ -898,15 +891,25 @@
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
Krontab
<span class="md-nav__icon md-icon"></span>
</label>
<div class="md-nav__link md-nav__link--index ">
<a href="../krontab/index.html">Krontab</a>
<label for="__nav_3">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
@@ -916,6 +919,8 @@
<ul class="md-nav__list" data-md-scrollfix>
@@ -928,7 +933,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
@@ -940,13 +945,13 @@
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
Introduction
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1">
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
Introduction
</label>
@@ -1014,7 +1019,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
@@ -1024,13 +1029,13 @@
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
Describing
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
Describing
</label>