diff --git a/admin/tool/log/store/standard/classes/log/store.php b/admin/tool/log/store/standard/classes/log/store.php
index b10dbc4ff02..ac4786b9262 100644
--- a/admin/tool/log/store/standard/classes/log/store.php
+++ b/admin/tool/log/store/standard/classes/log/store.php
@@ -63,8 +63,10 @@ class store implements \tool_log\log\writer, \core\log\sql_reader {
             $data['other'] = serialize($data['other']);
             if (CLI_SCRIPT) {
                 $data['origin'] = 'cli';
+                $data['ip'] = null;
             } else {
-                $data['origin'] = getremoteaddr();
+                $data['origin'] = 'web';
+                $data['ip'] = getremoteaddr();
             }
             $data['realuserid'] = \core\session\manager::is_loggedinas() ? $_SESSION['USER']->realuser : null;
             $dataobj[] = $data;
@@ -80,7 +82,7 @@ class store implements \tool_log\log\writer, \core\log\sql_reader {
         $records = $DB->get_records_select('logstore_standard_log', $selectwhere, $params, $sort, '*', $limitfrom, $limitnum);
 
         foreach ($records as $data) {
-            $extra = array('origin' => $data->origin, 'realuserid' => $data->realuserid);
+            $extra = array('origin' => $data->origin, 'ip' => $data->ip, 'realuserid' => $data->realuserid);
             $data = (array)$data;
             $id = $data['id'];
             $data['other'] = unserialize($data['other']);
@@ -88,6 +90,7 @@ class store implements \tool_log\log\writer, \core\log\sql_reader {
                 $data['other'] = array();
             }
             unset($data['origin']);
+            unset($data['ip']);
             unset($data['realuserid']);
             unset($data['id']);
 
diff --git a/admin/tool/log/store/standard/db/install.xml b/admin/tool/log/store/standard/db/install.xml
index dddadb382bd..0c75dbd6507 100644
--- a/admin/tool/log/store/standard/db/install.xml
+++ b/admin/tool/log/store/standard/db/install.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="admin/tool/log/store/standard/db" VERSION="20131222" COMMENT="XMLDB file for Moodle admin/tool/log/store/standard"
+<XMLDB PATH="admin/tool/log/store/standard/db" VERSION="20140130" COMMENT="XMLDB file for Moodle admin/tool/log/store/standard"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../../../../../lib/xmldb/xmldb.xsd"
 >
@@ -23,7 +23,8 @@
         <FIELD NAME="relateduserid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false"/>
         <FIELD NAME="other" TYPE="text" NOTNULL="false" SEQUENCE="false"/>
         <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/>
-        <FIELD NAME="origin" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="IP address, cli, cron"/>
+        <FIELD NAME="origin" TYPE="char" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="cli, cron, ws, etc."/>
+        <FIELD NAME="ip" TYPE="char" LENGTH="45" NOTNULL="false" SEQUENCE="false" COMMENT="IP address"/>
         <FIELD NAME="realuserid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="real user id when logged-in-as"/>
       </FIELDS>
       <KEYS>
@@ -34,4 +35,4 @@
       </INDEXES>
     </TABLE>
   </TABLES>
-</XMLDB>
+</XMLDB>
\ No newline at end of file
diff --git a/lib/classes/event/base.php b/lib/classes/event/base.php
index 4795ffa2cee..df6329ab56b 100644
--- a/lib/classes/event/base.php
+++ b/lib/classes/event/base.php
@@ -350,11 +350,12 @@ abstract class base implements \IteratorAggregate {
     /**
      * Create fake event from legacy log data.
      *
-     * @param stdClass $legacy
+     * @param \stdClass $legacy
      * @return base
      */
     public static final function restore_legacy($legacy) {
         $classname = get_called_class();
+        /** @var base $event */
         $event = new $classname();
         $event->restored = true;
         $event->triggered = true;
@@ -417,7 +418,15 @@ abstract class base implements \IteratorAggregate {
         $event->data['relateduserid'] = ($legacy->userid ? $legacy->userid : null);
         $event->data['timecreated'] = $legacy->time;
 
-        $event->logextra = array('origin'=>$legacy->ip, 'realuserid'=>null);
+        $event->logextra = array();
+        if ($legacy->ip) {
+            $event->logextra['origin'] = 'web';
+            $event->logextra['ip'] = $legacy->ip;
+        } else {
+            $event->logextra['origin'] = 'cli';
+            $event->logextra['ip'] = null;
+        }
+        $event->logextra['realuserid'] = null;
 
         $event->data['other'] = (array)$legacy;