<!DOCTYPE html>


<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src/site/apt/adminguide/archiva-logs.apt
 | Rendered using Apache Maven Fluido Skin 1.11.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
    <meta name="date" content="2009-07-22" />
    <title>Archiva Documentation &#x2013; Archiva Logs</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.11.0.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
    <script src="../js/apache-maven-fluido-1.11.0.min.js"></script>
    <!-- Google Analytics -->
    <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','//www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-140879-5', 'auto');
      ga('send', 'pageview');
      ga('set', 'anonymizeIp', true);
      ga('set', 'forceSSL', true);
    </script>

    <!-- Matomo -->
    <script>
        var _paq = window._paq = window._paq || [];
                _paq.push(['disableCookies']);
                    _paq.push(['trackPageView']);
                    _paq.push(['enableLinkTracking']);
        
        (function() {
            var u="https://analytics.apache.org";
            _paq.push(['setTrackerUrl', u+'/matomo.php']);
            _paq.push(['setSiteId', '10']);
            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
            g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
        })();
    </script>
    <!-- End Matomo Code -->
  </head>
  <body class="topBarDisabled">
    <a href="https://github.com/apache/archiva">
      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
        src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png"
        alt="Fork me on GitHub">
    </a>
    <div class="container-fluid">
      <header>
        <div id="banner">
          <div class="pull-left"><a href="http://archiva.apache.org/" id="bannerLeft"><img src="http://archiva.apache.org/images/archiva.png"  alt="Apache Archiva" style="" /></a></div>
          <div class="pull-right"><a href="https://www.apache.org/" id="bannerRight"><img src="https://www.apache.org/images/asf_logo_wide_2016.png"  alt="Apache Software Foundation" style="" /></a></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
      <li class=""><a href="https://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../../../index.html" title="Archiva">Archiva</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Archiva Documentation">Archiva Documentation</a><span class="divider">/</span></li>
    <li class="active ">Archiva Logs</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2022-07-25</li>
          <li id="projectVersion" class="pull-right">Version: 3.0.0-SNAPSHOT</li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
   <li class="nav-header">Introduction</li>
    <li><a href="../quick-start.html" title="Quick Start"><span class="none"></span>Quick Start</a></li>
    <li><a href="../tour/index.html" title="Feature Tour"><span class="none"></span>Feature Tour</a></li>
    <li><a href="../release-notes.html" title="Release Notes"><span class="none"></span>Release Notes</a></li>
    <li><a href="../../../download.html" title="Downloads"><span class="none"></span>Downloads</a></li>
   <li class="nav-header">Users Guide</li>
    <li><a href="../userguide/browsing.html" title="Browsing"><span class="none"></span>Browsing</a></li>
    <li><a href="../userguide/searching.html" title="Searching"><span class="none"></span>Searching</a></li>
    <li><a href="../userguide/delete-artifact.html" title="Deleting an Artifact"><span class="none"></span>Deleting an Artifact</a></li>
    <li><a href="../userguide/using-repository.html" title="Using as a repository"><span class="none"></span>Using as a repository</a></li>
    <li><a href="../userguide/deploy.html" title="Deploying to repository"><span class="none"></span>Deploying to repository</a></li>
    <li><a href="../userguide/virtual-repositories.html" title="Configuring Virtual Repositories"><span class="none"></span>Configuring Virtual Repositories</a></li>
    <li><a href="../userguide/rss.html" title="Rss Feeds in Archiva"><span class="none"></span>Rss Feeds in Archiva</a></li>
    <li><a href="../userguide/querying-artifacts.html" title="Querying Artifacts"><span class="none"></span>Querying Artifacts</a></li>
   <li class="nav-header">Administrators Guide</li>
    <li><a href="../adminguide/installing.html" title="Installing Archiva"><span class="icon-chevron-right"></span>Installing Archiva</a></li>
    <li><a href="../adminguide/databases.html" title="Databases"><span class="none"></span>Databases</a></li>
    <li><a href="../adminguide/repositories-content-storage.html" title="Repositories Content Storage"><span class="none"></span>Repositories Content Storage</a></li>
    <li><a href="../adminguide/security.html" title="Security"><span class="icon-chevron-right"></span>Security</a></li>
    <li><a href="../adminguide/configuration.html" title="Archiva Configuration"><span class="icon-chevron-right"></span>Archiva Configuration</a></li>
    <li><a href="../adminguide/webservices/rest.html" title="REST Apis"><span class="none"></span>REST Apis</a></li>
    <li><a href="../adminguide/configuration-files.html" title="Configuration Files"><span class="none"></span>Configuration Files</a></li>
    <li><a href="../adminguide/system-status.html" title="System Status"><span class="none"></span>System Status</a></li>
    <li><a href="../adminguide/logging.html" title="Log Files"><span class="icon-chevron-down"></span>Log Files</a>
     <ul class="nav nav-list">
      <li class="active"><a><span class="none"></span>Archiva Logs</a></li>
      <li><a href="../adminguide/audit-logs.html" title="Audit Logs"><span class="none"></span>Audit Logs</a></li>
      <li><a href="../adminguide/security-logs.html" title="Security Logs"><span class="none"></span>Security Logs</a></li>
     </ul></li>
    <li><a href="../adminguide/reports.html" title="Reports"><span class="none"></span>Reports</a></li>
   <li class="nav-header">Customising Archiva</li>
    <li><a href="../customising/writing-consumer.html" title="Writing a Consumer Plugin"><span class="none"></span>Writing a Consumer Plugin</a></li>
   <li class="nav-header">More Information</li>
    <li><a href="https://cwiki.apache.org/confluence/display/ARCHIVA/Index" class="externalLink" title="Archiva Wiki"><span class="none"></span>Archiva Wiki</a></li>
   <li class="nav-header">ASF</li>
    <li><a href="https://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works"><span class="none"></span>How Apache Works</a></li>
    <li><a href="https://www.apache.org/foundation/" class="externalLink" title="Foundation"><span class="none"></span>Foundation</a></li>
    <li><a href="https://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache"><span class="none"></span>Sponsoring Apache</a></li>
    <li><a href="https://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a></li>
   <li class="nav-header">Project Documentation</li>
    <li><a href="../project-info.html" title="Project Information"><span class="icon-chevron-right"></span>Project Information</a></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
<form id="search-form" action="https://www.google.com/search" method="get" >
  <input value="https://archiva.apache.org/docs/3.0.0-SNAPSHOT/" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script>asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
            <div id="poweredBy">
              <div class="clear"></div>
    <div id="twitter" style="border:none; margin-top: 10px">
    <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="left" data-size="medium" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
    </div>
              <div class="clear"></div>
              <div class="clear"></div>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
            </div>
          </div>
        </header>
        <main id="bodyColumn"  class="span10" >
<section>
<h2><a name="Archiva_Logs"></a>Archiva Logs</h2>
<p>Archiva's <code>logs</code> directory contains an archiva log file named <code>archiva.log</code>, which logs all the startup information and the output logs of Archiva.</p>
<p>A typical record looks like this:</p>
<div>
<pre>2013-05-02 23:15:41,521 [pool-6-thread-1] INFO  org.apache.archiva.scheduler.repository.ArchivaRepositoryScanningTaskExecutor [] - Gathering repository statistics
2013-05-02 23:15:41,582 [pool-6-thread-1] INFO  org.apache.archiva.metadata.repository.stats.DefaultRepositoryStatisticsManager [] - Gathering statistics executed in 60ms
2013-05-02 23:15:41,615 [pool-6-thread-1] INFO  org.apache.archiva.scheduler.repository.ArchivaRepositoryScanningTaskExecutor [] - Finished repository task: RepositoryTask [repositoryId=snapshots, resourceFile=null, scanAll=false, updateRelatedArtifacts=false]
2013-05-02 23:15:41,626 [pool-5-thread-1] INFO  org.apache.archiva.scheduler.indexing.ArchivaIndexingTaskExecutor [] - indexed maven repository: snapshots, onlyUpdate: false, time 106 ms
2013-05-02 23:15:41,673 [WrapperSimpleAppMain] WARN  org.apache.archiva.redback.components.scheduler.DefaultScheduler [] - Will not schedule this job as a job {rj:internal:rg} already exists.
2013-05-02 23:15:41,675 [WrapperSimpleAppMain] WARN  org.apache.archiva.redback.components.scheduler.DefaultScheduler [] - Will not schedule this job as a job {rj:snapshots:rg} already exists.
2013-05-02 23:15:41,680 [WrapperSimpleAppMain] INFO  org.apache.archiva.scheduler.repository.DefaultRepositoryArchivaTaskScheduler [] - Time to initalize DefaultRepositoryArchivaTaskScheduler: 8 ms
2013-05-02 23:15:41,682 [WrapperSimpleAppMain] INFO  org.apache.archiva.web.startup.Banner [] - _________________________
                          __________________________________
               /\_       /                                  \
              /`/@),    |  On behalf of all of the alpacas   |
              |  (~'  __| toiling away on the Apache Archiva |
      _,--.___/  |    \      project team, I would like to   |
    ,' ,     (   |     \         welcome you to Archiva      |
    |  (      \  /      |          1.4-M4-SNAPSHOT           |
     \  )\_/  ,_/       |                                    |
     / /   ( |/         |     http://archiva.apache.org/     |
    ( |    ( |          |     users@archiva.apache.org       |
     \|     \|           \__________________________________/


2013-05-02 23:15:41,707 [WrapperSimpleAppMain] INFO  org.apache.jackrabbit.webdav.server.AbstractWebdavServlet [] - authenticate-header = Basic realm=&quot;Jackrabbit Webdav Server&quot;
2013-05-02 23:15:41,708 [WrapperSimpleAppMain] INFO  org.apache.jackrabbit.webdav.server.AbstractWebdavServlet [] - csrf-protection = null
2013-05-02 23:15:41,708 [WrapperSimpleAppMain] INFO  org.apache.jackrabbit.webdav.server.AbstractWebdavServlet [] - createAbsoluteURI = true
2013-05-02 23:15:41,726 [WrapperSimpleAppMain] INFO  org.apache.archiva.webdav.RepositoryServlet [] - initServers done in 18&#xa0;ms</pre></div></section>
        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<div class="row">
      <div class="span6 offset1">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
      </div>
      <div class="row">
        &nbsp;
      </div>
      <div class="row">
      <div class="span6 offset2">
      <p>
        <a href="https://archiva.apache.org/docs/3.0.0-SNAPSHOT/privacy-policy.html">Privacy Policy</a>
        </p>
      </div>
      </div>
        </div>
      </div>
    </footer>
<script>
	if(anchors) {
	  anchors.add();
	}
</script>
  </body>
</html>