Enabling Access Logging in Fisheye

Warning

The current solution is not compatible with Fisheye versions up to 4.6.x which bundle Jetty library version 8.1.


Fisheye 4.7.0 and later versions bundle Jetty library version 9.4, in which the settings below are incompatible.

This is being tracked at FE-7172 - Getting issue details... STATUS

To enable access logging in Fisheye versions between 4.6.x and later:

  1. Stop Fisheye/Crucible,
  2. Create the file <FishEye install directory>/content/WEB-INF/jetty-web.xml with the following content:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd" >
    <Configure class="org.eclipse.jetty.webapp.WebAppContext">
      <Call name="insertHandler">
        <Arg>
          <New id="RequestLog" class="com.cenqua.fisheye.web.jetty.FishEyeRequestLogHandler">
            <Set name="requestLog">
              <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
                <Set name="filename"><Property name="jetty.logs" default="PATH_LOG_FOLDER"/>/access-yyyy_mm_dd.log</Set>
                <Set name="filenameDateFormat">yyyy_MM_dd</Set>
                <Set name="LogTimeZone">GMT</Set>
                <Set name="retainDays">90</Set>
                <Set name="append">true</Set>
                <Set name="LogLatency">true</Set>
              </New>
            </Set>
          </New>
        </Arg>
      </Call>
    </Configure>
    
  3. Restart Fisheye/Crucible.

This will create an access log in <FishEye install directory>/var/log/fisheye-access-yyyy_mm_dd.log format (e.g. fisheye-access-2010_03_17.log). If you want to change the path to your FISHEYE_INST directory, change the default="./var/log/" to the path to the log folder in FISHEYE_INST.

The log directory must exist

If the path to the log directory given by the default attribute of the SystemProperty tag (defined in the line 10 in the jetty-web.xml above) does not exist, then Fisheye will fail to start and will not log any error message.

The path given in the example below is correct when FISHEYE_INST and the <FishEye install directory> are the same directory, otherwise please use the absolute path of your FISHEYE_INST/var/log directory.

Log format

The logs are written in NCSA format:

172.20.5.186 -  -  [17/Mar/2010:22:50:21 +0000] "GET /fe/commitSparkline.do?w=280&h=48&context=repository&repname=TestRepo&outputtype=image HTTP/1.1" 200 256
172.20.5.186 -  -  [17/Mar/2010:22:50:21 +0000] "GET /fe/commitSparkline.do?w=280&h=48&context=repository&repname=npanday&outputtype=image HTTP/1.1" 200 177
172.20.5.186 -  -  [17/Mar/2010:22:50:21 +0000] "GET /fe/commitSparkline.do?w=280&h=48&context=repository&repname=jutils&outputtype=image HTTP/1.1" 200 775
172.20.5.186 -  -  [17/Mar/2010:22:50:21 +0000] "GET /fe/commitSparkline.do?w=280&h=48&context=repository&repname=P4&outputtype=image HTTP/1.1" 200 177
172.20.5.186 -  -  [17/Mar/2010:22:50:21 +0000] "GET /fe/commitSparkline.do?w=280&h=48&context=repository&repname=Rails&outputtype=image HTTP/1.1" 200 1311
172.20.5.186 -  -  [17/Mar/2010:22:50:22 +0000] "GET /fe/commitSparkline.do?w=280&h=48&context=repository&repname=FE-2363&outputtype=image HTTP/1.1" 200 128 

Please refer to the Jetty documentation for more configuration options.

Compatibility

If you are using an earlier version of Fisheye than Fisheye 2.7.8, replace com.cenqua.fisheye.web.jetty.FishEyeRequestLogHandler by org.mortbay.jetty.handler.RequestLogHandler.

FishEyeRequestLogHandler was added in 2.7.8 to fix an issue where the user credentials would not be added to the NCSA log: FE-3040.

As mentioned at the top, this solution works with Fisheye versions up to 4.6.x. More information can be found at  FE-7172 - Getting issue details... STATUS


Last modified on May 18, 2020

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.