﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/latest/dotnetdoc/api/Apache.Ignite.Core.Log.CategoryLogger.html" />


    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Class CategoryLogger
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Class CategoryLogger
   | 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.CategoryLogger">
  
  
  <h1 id="Apache_Ignite_Core_Log_CategoryLogger" data-uid="Apache.Ignite.Core.Log.CategoryLogger" class="text-break">Class CategoryLogger
  </h1>
  <div class="markdown level0 summary"><p>Wrapping logger with a predefined category.
<p>
When <a class="xref" href="Apache.Ignite.Core.Log.CategoryLogger.html#Apache_Ignite_Core_Log_CategoryLogger_Log_Apache_Ignite_Core_Log_LogLevel_System_String_System_Object___System_IFormatProvider_System_String_System_String_System_Exception_">Log(LogLevel, String, Object[], IFormatProvider, String, String, Exception)</a> method is called, and <code>category</code> parameter is null, predefined category 
will be used.</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">CategoryLogger</span></div>
  </div>
  <div classs="implements">
    <h5>Implements</h5>
    <div><a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a></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_CategoryLogger_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public class CategoryLogger : ILogger</code></pre>
  </div>
  <h3 id="constructors">Constructors
  </h3>
  <a id="Apache_Ignite_Core_Log_CategoryLogger__ctor_" data-uid="Apache.Ignite.Core.Log.CategoryLogger.#ctor*"></a>
  <h4 id="Apache_Ignite_Core_Log_CategoryLogger__ctor_Apache_Ignite_Core_Log_ILogger_System_String_" data-uid="Apache.Ignite.Core.Log.CategoryLogger.#ctor(Apache.Ignite.Core.Log.ILogger,System.String)">CategoryLogger(ILogger, String)</h4>
  <div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Apache.Ignite.Core.Log.CategoryLogger.html">CategoryLogger</a> class.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public CategoryLogger(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 to wrap.</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>
  <h3 id="methods">Methods
  </h3>
  <a id="Apache_Ignite_Core_Log_CategoryLogger_IsEnabled_" data-uid="Apache.Ignite.Core.Log.CategoryLogger.IsEnabled*"></a>
  <h4 id="Apache_Ignite_Core_Log_CategoryLogger_IsEnabled_Apache_Ignite_Core_Log_LogLevel_" data-uid="Apache.Ignite.Core.Log.CategoryLogger.IsEnabled(Apache.Ignite.Core.Log.LogLevel)">IsEnabled(LogLevel)</h4>
  <div class="markdown level1 summary"><p>Determines whether the specified log level is enabled.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool IsEnabled(LogLevel level)</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.LogLevel.html">LogLevel</a></td>
        <td><span class="parametername">level</span></td>
        <td><p>The level.</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><span class="xref">System.Boolean</span></td>
        <td><p>Value indicating whether the specified log level is enabled</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Log_CategoryLogger_Log_" data-uid="Apache.Ignite.Core.Log.CategoryLogger.Log*"></a>
  <h4 id="Apache_Ignite_Core_Log_CategoryLogger_Log_Apache_Ignite_Core_Log_LogLevel_System_String_System_Object___System_IFormatProvider_System_String_System_String_System_Exception_" data-uid="Apache.Ignite.Core.Log.CategoryLogger.Log(Apache.Ignite.Core.Log.LogLevel,System.String,System.Object[],System.IFormatProvider,System.String,System.String,System.Exception)">Log(LogLevel, String, Object[], IFormatProvider, String, String, Exception)</h4>
  <div class="markdown level1 summary"><p>Logs the specified message.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public void Log(LogLevel level, string message, object[] args, IFormatProvider formatProvider, string category, string nativeErrorInfo, Exception ex)</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.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 to format <code data-dev-comment-type="paramref" class="paramref">message</code>.
Can be null (formatting will not occur).</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.IFormatProvider</span></td>
        <td><span class="parametername">formatProvider</span></td>
        <td><p>The format provider. Can be null if <code data-dev-comment-type="paramref" class="paramref">args</code> is null.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">category</span></td>
        <td><p>The logging category name.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">nativeErrorInfo</span></td>
        <td><p>The native error information.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Exception</span></td>
        <td><span class="parametername">ex</span></td>
        <td><p>The exception. Can be null.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="implements">Implements</h3>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.ILogger.html">ILogger</a>
  </div>
  <h3 id="extensionmethods">Extension Methods</h3>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_String_">LoggerExtensions.Trace(ILogger, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___">LoggerExtensions.Trace(ILogger, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_">LoggerExtensions.Trace(ILogger, Exception, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Trace_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___">LoggerExtensions.Trace(ILogger, Exception, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_String_">LoggerExtensions.Debug(ILogger, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___">LoggerExtensions.Debug(ILogger, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_">LoggerExtensions.Debug(ILogger, Exception, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Debug_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___">LoggerExtensions.Debug(ILogger, Exception, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_String_">LoggerExtensions.Info(ILogger, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___">LoggerExtensions.Info(ILogger, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_">LoggerExtensions.Info(ILogger, Exception, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Info_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___">LoggerExtensions.Info(ILogger, Exception, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_String_">LoggerExtensions.Warn(ILogger, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___">LoggerExtensions.Warn(ILogger, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_">LoggerExtensions.Warn(ILogger, Exception, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Warn_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___">LoggerExtensions.Warn(ILogger, Exception, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_String_">LoggerExtensions.Error(ILogger, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_String_System_Object___">LoggerExtensions.Error(ILogger, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_">LoggerExtensions.Error(ILogger, Exception, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Error_Apache_Ignite_Core_Log_ILogger_System_Exception_System_String_System_Object___">LoggerExtensions.Error(ILogger, Exception, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_String_">LoggerExtensions.Log(ILogger, LogLevel, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_String_System_Object___">LoggerExtensions.Log(ILogger, LogLevel, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_Exception_System_String_">LoggerExtensions.Log(ILogger, LogLevel, Exception, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_Log_Apache_Ignite_Core_Log_ILogger_Apache_Ignite_Core_Log_LogLevel_System_Exception_System_String_System_Object___">LoggerExtensions.Log(ILogger, LogLevel, Exception, String, Object[])</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_GetLogger_Apache_Ignite_Core_Log_ILogger_System_String_">LoggerExtensions.GetLogger(ILogger, String)</a>
  </div>
  <div>
      <a class="xref" href="Apache.Ignite.Core.Log.LoggerExtensions.html#Apache_Ignite_Core_Log_LoggerExtensions_GetLogger_Apache_Ignite_Core_Log_ILogger_System_Type_">LoggerExtensions.GetLogger(ILogger, Type)</a>
  </div>
</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>
