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

<META NAME="ROBOTS" CONTENT="NOINDEX">

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Class IgniteLog4NetLogger
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Class IgniteLog4NetLogger
   | 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.Log4Net.IgniteLog4NetLogger">
  
  
  <h1 id="Apache_Ignite_Log4Net_IgniteLog4NetLogger" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger" class="text-break">Class IgniteLog4NetLogger
  </h1>
  <div class="markdown level0 summary"><p>Ignite log4net integration.</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">IgniteLog4NetLogger</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.Log4Net.html">Apache.Ignite.Log4Net</a></h6>
  <h6><strong>Assembly</strong>: Apache.Ignite.Log4Net.dll</h6>
  <h5 id="Apache_Ignite_Log4Net_IgniteLog4NetLogger_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public class IgniteLog4NetLogger : ILogger</code></pre>
  </div>
  <h3 id="constructors">Constructors
  </h3>
  <a id="Apache_Ignite_Log4Net_IgniteLog4NetLogger__ctor_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.#ctor*"></a>
  <h4 id="Apache_Ignite_Log4Net_IgniteLog4NetLogger__ctor" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.#ctor">IgniteLog4NetLogger()</h4>
  <div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Apache.Ignite.Log4Net.IgniteLog4NetLogger.html">IgniteLog4NetLogger</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 IgniteLog4NetLogger()</code></pre>
  </div>
  <a id="Apache_Ignite_Log4Net_IgniteLog4NetLogger__ctor_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.#ctor*"></a>
  <h4 id="Apache_Ignite_Log4Net_IgniteLog4NetLogger__ctor_log4net_ILog_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.#ctor(log4net.ILog)">IgniteLog4NetLogger(ILog)</h4>
  <div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Apache.Ignite.Log4Net.IgniteLog4NetLogger.html">IgniteLog4NetLogger</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 IgniteLog4NetLogger(ILog log)</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><span class="xref">log4net.ILog</span></td>
        <td><span class="parametername">log</span></td>
        <td><p>The log.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="methods">Methods
  </h3>
  <a id="Apache_Ignite_Log4Net_IgniteLog4NetLogger_ConvertLogLevel_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.ConvertLogLevel*"></a>
  <h4 id="Apache_Ignite_Log4Net_IgniteLog4NetLogger_ConvertLogLevel_Apache_Ignite_Core_Log_LogLevel_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.ConvertLogLevel(Apache.Ignite.Core.Log.LogLevel)">ConvertLogLevel(LogLevel)</h4>
  <div class="markdown level1 summary"><p>Converts the Ignite LogLevel to the log4net log 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 Level ConvertLogLevel(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 Ignite log 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">log4net.Core.Level</span></td>
        <td><p>Corresponding log4net log level.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Log4Net_IgniteLog4NetLogger_IsEnabled_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.IsEnabled*"></a>
  <h4 id="Apache_Ignite_Log4Net_IgniteLog4NetLogger_IsEnabled_Apache_Ignite_Core_Log_LogLevel_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.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_Log4Net_IgniteLog4NetLogger_Log_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.Log*"></a>
  <h4 id="Apache_Ignite_Log4Net_IgniteLog4NetLogger_Log_Apache_Ignite_Core_Log_LogLevel_System_String_System_Object___System_IFormatProvider_System_String_System_String_System_Exception_" data-uid="Apache.Ignite.Log4Net.IgniteLog4NetLogger.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>
</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 - 2018 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>
