API: Add optional API request logging to a file or UDP; intending to use this on...
authorRoan Kattouw <catrope@users.mediawiki.org>
Thu, 27 Aug 2009 17:07:23 +0000 (17:07 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Thu, 27 Aug 2009 17:07:23 +0000 (17:07 +0000)
api.php
includes/DefaultSettings.php

diff --git a/api.php b/api.php
index 6c32baa..cf56858 100644 (file)
--- a/api.php
+++ b/api.php
@@ -38,6 +38,7 @@
 require (dirname(__FILE__) . '/includes/WebStart.php');
 
 wfProfileIn('api.php');
+$starttime = microtime( true );
 
 // URL safety checks
 //
@@ -118,9 +119,21 @@ $processor->execute();
 wfDoUpdates();
 
 // Log what the user did, for book-keeping purposes.
+$endtime = microtime( true );
 wfProfileOut('api.php');
 wfLogProfilingData();
 
+// Log the request
+if ( $wgAPIRequestLog ) {
+       wfErrorLog( implode( ',', array(
+                       wfTimestamp( TS_MW ),
+                       $endtime - $starttime,
+                       wfGetIP(),
+                       wfArrayToCGI( $wgRequest->getValues() )
+       ) ) . "\n", $wgAPIRequestLog );
+       wfDebug( "Logged API request to $wgAPIRequestLog\n" );
+}
+
 // Shut down the database
 wfGetLBFactory()->shutdown();
 
index dc657d9..c649938 100644 (file)
@@ -3822,6 +3822,12 @@ $wgAPIMaxResultSize = 8388608;
  */
 $wgAPIMaxUncachedDiffs = 1;
 
+/**
+ * Log file or URL (TCP or UDP) to log API requests to, or false to disable
+ * API request logging
+ */
+$wgAPIRequestLog = false;
+
 /**
  * Parser test suite files to be run by parserTests.php when no specific
  * filename is passed to it.