<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Apache Logging Services</title>

    <link href="css/asciidoctor-default.css" rel="stylesheet" type="text/css" />
    <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <link href="css/site.css" rel="stylesheet" type="text/css" />

    <script src="js/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/site.js"></script>

    <!-- Google Analytics -->
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', '{{ googleAnalyticsID }}']);
        _gaq.push (['_gat._anonymizeIp']);
        _gaq.push(['_trackPageview']);

        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
    </script>
</head>

  <body>
<div class="navbar">
    <div class="navbar-inner">
        <div class="container">
            <a class="brand" href="https://logging.apache.org">Apache Logging Services&trade;</a>
            <ul class="nav">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">About<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a target="_blank" href="guidelines.html">Guidelines</a></li>
                        <li><a target="_blank" href="charter.html">Charter</a></li>
                        <li><a target="_blank" href="team-list.html">Team</a></li>
                        <li><a target="_blank" href="mailing-lists.html">Mailing lists</a></li>
                        <li><a target="_blank" href="https://cwiki.apache.org/confluence/display/LOGGING/Home">Wiki</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="nav">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Projects<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a target="_blank" href="chainsaw/2.x/index.html">Apache chainsaw</a></li>
                        <li><a target="_blank" href="log4cxx/latest_stable/index.html">Apache log4cxx</a></li>
                        <li><a target="_blank" href="log4j/2.x/index.html">Apache log4j</a></li>
                        <li><a target="_blank" href="log4j-audit/latest/index.html">Apache log4j-audit</a></li>
                        <li><a target="_blank" href="log4j/kotlin/index.html">Apache log4j Kotlin API</a></li>
                        <li><a target="_blank" href="log4j/scala/index.html">Apache log4j Scala API</a></li>
                        <li><a target="_blank" href="log4net/2.x/index.html">Apache log4net</a></li>
                        <li><a target="_blank" href="log4php/latest/index.html">Apache log4php</a></li>
                    </ul>
                </li>
            </ul>
            <ul class="nav">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dormant<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a target="_blank" href="log4j/1.2/index.html">Apache log4j 1.x</a></li>
                        <li><a target="_blank" href="log4j/extras/index.html">Apache log4j 1.x extras</a></li>
                    </ul>
                </li>
            </ul>

            <ul class="nav pull-right">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache<b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a target="_blank" href="https://www.apache.org/">Home</a></li>
                        <li><a target="_blank" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                        <li><a target="_blank" href="https://www.apache.org/licenses/">License</a></li>
                        <li><a target="_blank" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                        <li><a target="_blank" href="https://www.apache.org/events/current-event.html">Current Events</a></li>
                        <li><a target="_blank" href="https://www.apache.org/security/">Security</a></li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
</div>

    <div class="container">
      <div class="content">
        <div class="hero-unit">
          <div class="pull-right"><img class="logo" src="img/feather.gif" /></div>
          <h1>Apache logging services</h1>
          <p>The Apache Logging Services Project creates and maintains open-source software related to the logging of
            application behavior and released at no charge to the public.</p>
        </div>

        <div class="row">
          <div class="span4">
            <h2>Apache Log4j</h2>
            <p>Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x.</p>
            <p><a target="_blank" class="btn" href="log4j/2.x/index.html">Project site &raquo;</a></p>
          </div>
          <div class="span4">
            <h2>Apache log4php</h2>
            <p>A versatile logging framework for PHP. Originally a port of Apache log4j to PHP, it has grown to include
              various PHP specific features.</p>
            <p><a target="_blank" class="btn" href="log4php/latest/index.html">Project site &raquo;</a></p>
          </div>
          <div class="span4">
            <h2>Apache log4cxx</h2>
            <p>Apache log4cxx is a logging framework for C++ patterned after log4j.</p>
            <p><a target="_blank" class="btn" href="log4cxx/latest_stable/index.html">Project site &raquo;</a></p>
          </div>

        </div>


        <div class="row">
          <div class="span4">
            <h2>Apache chainsaw</h2>
            <p>A GUI based log viewer. Chainsaw is a companion application to log4j written by members of the log4j
              development community.</p>
            <p><a target="_blank" class="btn" href="chainsaw/2.x/index.html">Project site &raquo;</a></p>
          </div>
          <div class="span4">
            <h2>Apache Log4j Audit</h2>
            <p>Audit logging framework built upon Apache Log4j 2.</p>
            <p><a target="_blank" class="btn" href="log4j-audit/latest/index.html">Project site &raquo;</a></p>
          </div>
          <div class="span4">
            <h2>Apache Log4j Scala</h2>
            <p>Scala API for Log4j 2.</p>
            <p><a target="_blank" class="btn" href="log4j/scala/index.html">Project site &raquo;</a></p>
          </div>

        </div>

        <div class="row">
          <div class="span4">
            <h2>Apache Log4j Kotlin</h2>
            <p>Kotlin API for Log4j 2.</p>
            <p><a target="_blank" class="btn" href="log4j/kotlin/index.html">Project site &raquo;</a></p>
          </div>
          <div class="span4">
            <h2>Apache Log4Net</h2>
            <p>A port of the original Apache log4j framework to the Microsoft .NET runtime.</p>
            <p><a target="_blank" class="btn" href="log4net/2.x/index.html">Project site &raquo;</a></p>
          </div>
          <div class="span4">
            <h2>Dormant Projects</h2>
            <p>Logging Services projects that are no longer actively maintained.</p>
            <p><a target="_blank" class="btn" href="dormant.html">Dormant Projects &raquo;</a></p>
          </div>
        </div>

      </div>

<div class="footer">
        <p>
            Copyright © 2017-2020 <a href="https://www.apache.org" target="external">The Apache Software Foundation</>.
            Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0"
            target="external">Apache Software License, Version 2.0</> Please read our "privacy policy":privacy-policy.html.
        </p><p>
            Apache, Apache chainsaw, Apache log4cxx, Apache log4j, Apache log4net, Apache log4php and the Apache
            feather logo are trademarks of The Apache Software Foundation.	Oracle and Java are registered trademarks
            of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
        </p><p>
            Site powered by <a href="https://getbootstrap.com/" target="external">Bootstrap</a>
            and <a href="https://jquery.com/" target="external">jQuery</a>.
        </p>
</div>
    </div>
  </body>
</html>
