﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.9.1/dotnetdoc/api/Apache.Ignite.Core.Log.LoggerExtensions.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>


    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Class LoggerExtensions
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Class LoggerExtensions
   | Apache Ignite.NET ">
    <meta name="generator" content="docfx 2.24.0.0">
    
    <link rel="shortcut icon" href="../images/favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    <meta property="docfx:rel" content="../">
    
  
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
  <body data-spy="scroll" data-target="#affix">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="../index.html">
                <img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items"></div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Log.LoggerExtensions">
  
  
  <h1 id="Apache_Ignite_Core_Log_LoggerExtensions" data-uid="Apache.Ignite.Core.Log.LoggerExtensions" class="text-break">Class LoggerExtensions
  </h1>
  <div class="markdown level0 summary"><p>Extension methods for <a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></p>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><span class="xref">System.Object</span></div>
    <div class="level1"><span class="xref">LoggerExtensions</span></div>
  </div>
  <div class="inheritedMembers">
    <h5>Inherited Members</h5>
    <div>
      <span class="xref">System.Object.ToString()</span>
    </div>
    <div>
      <span class="xref">System.Object.Equals(System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.Equals(System.Object, System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.GetHashCode()</span>
    </div>
    <div>
      <span class="xref">System.Object.GetType()</span>
    </div>
    <div>
      <span class="xref">System.Object.MemberwiseClone()</span>
    </div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Log.html">Apache.Ignite.Core.Log</a></h6>
  <h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
  <h5 id="Apache_Ignite_Core_Log_LoggerExtensions_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static class LoggerExtensions</code></pre>
  </div>
  <h3 id="methods">Methods
  </h3>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String)">Debug(ILogger, Exception, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Debug">Debug</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Debug(this ILogger logger, Exception ex, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String,System.Object[])">Debug(ILogger, Exception, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Debug">Debug</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Debug(this ILogger logger, Exception ex, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug(Apache.Ignite.Core.Log.ILogger,System.String)">Debug(ILogger, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Debug">Debug</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Debug(this ILogger logger, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Debug(Apache.Ignite.Core.Log.ILogger,System.String,System.Object[])">Debug(ILogger, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Debug">Debug</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Debug(this ILogger logger, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Error_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String)">Error(ILogger, Exception, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Error">Error</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Error(this ILogger logger, Exception ex, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Error_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String,System.Object[])">Error(ILogger, Exception, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Error">Error</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Error(this ILogger logger, Exception ex, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Error_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error(Apache.Ignite.Core.Log.ILogger,System.String)">Error(ILogger, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Error">Error</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Error(this ILogger logger, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Error_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Error(Apache.Ignite.Core.Log.ILogger,System.String,System.Object[])">Error(ILogger, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Error">Error</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Error(this ILogger logger, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_GetLogger_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.GetLogger*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_GetLogger_Apache_Ignite_Core_Log_ILogger_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.GetLogger(Apache.Ignite.Core.Log.ILogger,System.String)">GetLogger(ILogger, String)</h4>
  <div class="markdown level1 summary"><p>Gets the <a class="xref" href="Apache.Ignite.Core.Log.CategoryLogger.html">CategoryLogger</a> with a specified category that wraps provided logger.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ILogger GetLogger(this ILogger logger, string category)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">category</span></td>
        <td><p>The category.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><p>Logger that uses specified category when no other category is provided.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_GetLogger_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.GetLogger*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_GetLogger_Apache_Ignite_Core_Log_ILogger_System_Type_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.GetLogger(Apache.Ignite.Core.Log.ILogger,System.Type)">GetLogger(ILogger, Type)</h4>
  <div class="markdown level1 summary"><p>Gets the <a class="xref" href="Apache.Ignite.Core.Log.CategoryLogger.html">CategoryLogger</a> with a specified category that wraps provided logger.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ILogger GetLogger(this ILogger logger, Type category)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Type</span></td>
        <td><span class="parametername">category</span></td>
        <td><p>The category as a type.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><p>Logger that uses specified category when no other category is provided.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Info_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String)">Info(ILogger, Exception, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Info">Info</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Info(this ILogger logger, Exception ex, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Info_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String,System.Object[])">Info(ILogger, Exception, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Info">Info</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Info(this ILogger logger, Exception ex, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Info_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info(Apache.Ignite.Core.Log.ILogger,System.String)">Info(ILogger, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Info">Info</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Info(this ILogger logger, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Info_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Info(Apache.Ignite.Core.Log.ILogger,System.String,System.Object[])">Info(ILogger, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Info">Info</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Info(this ILogger logger, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Log_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_Exception_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log(Apache.Ignite.Core.Log.ILogger,Apache.Ignite.Core.Log.LogLevel,System.Exception,System.String)">Log(ILogger, LogLevel, Exception, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Log(this ILogger logger, LogLevel level, Exception ex, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html">LogLevel</a></td>
        <td><span class="parametername">level</span></td>
        <td><p>The level.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Log_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_Exception_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log(Apache.Ignite.Core.Log.ILogger,Apache.Ignite.Core.Log.LogLevel,System.Exception,System.String,System.Object[])">Log(ILogger, LogLevel, Exception, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Log(this ILogger logger, LogLevel level, Exception ex, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html">LogLevel</a></td>
        <td><span class="parametername">level</span></td>
        <td><p>The level.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Log_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log(Apache.Ignite.Core.Log.ILogger,Apache.Ignite.Core.Log.LogLevel,System.String)">Log(ILogger, LogLevel, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Log(this ILogger logger, LogLevel level, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html">LogLevel</a></td>
        <td><span class="parametername">level</span></td>
        <td><p>The level.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Log_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Log(Apache.Ignite.Core.Log.ILogger,Apache.Ignite.Core.Log.LogLevel,System.String,System.Object[])">Log(ILogger, LogLevel, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Log(this ILogger logger, LogLevel level, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html">LogLevel</a></td>
        <td><span class="parametername">level</span></td>
        <td><p>The level.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String)">Trace(ILogger, Exception, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Trace">Trace</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Trace(this ILogger logger, Exception ex, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String,System.Object[])">Trace(ILogger, Exception, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Trace">Trace</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Trace(this ILogger logger, Exception ex, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace(Apache.Ignite.Core.Log.ILogger,System.String)">Trace(ILogger, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Trace">Trace</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Trace(this ILogger logger, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Trace(Apache.Ignite.Core.Log.ILogger,System.String,System.Object[])">Trace(ILogger, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Trace">Trace</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Trace(this ILogger logger, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String)">Warn(ILogger, Exception, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Warn">Warn</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Warn(this ILogger logger, Exception ex, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn(Apache.Ignite.Core.Log.ILogger,System.Exception,System.String,System.Object[])">Warn(ILogger, Exception, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Warn">Warn</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Warn(this ILogger logger, Exception ex, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_String_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn(Apache.Ignite.Core.Log.ILogger,System.String)">Warn(ILogger, String)</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Warn">Warn</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Warn(this ILogger logger, string message)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn*"></a>
  <h4 id="Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___" data-uid="Apache.Ignite.Core.Log.LoggerExtensions.Warn(Apache.Ignite.Core.Log.ILogger,System.String,System.Object[])">Warn(ILogger, String, Object[])</h4>
  <div class="markdown level1 summary"><p>Logs the message with <a class="xref" href="Apache.Ignite.Core.Log.LogLevel.html#Apache_Ignite_Core_Log_LogLevel_Warn">Warn</a> level.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void Warn(this ILogger logger, string message, params object[] args)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></td>
        <td><span class="parametername">logger</span></td>
        <td><p>The logger.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">message</span></td>
        <td><p>The message.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Object</span>[]</td>
        <td><span class="parametername">args</span></td>
        <td><p>The arguments.</p>
</td>
      </tr>
    </tbody>
  </table>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            © 2015 - 2019 The Apache Software Foundation
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
