Manual:Logging table

Every log action in MediaWiki is logged in the logging table. Users can see those edits on Special:Log, with the exception of a few restricted logs (like Special:Log/suppress).

The contents of this table is what you see on the Special:Log page. For example:

log_id
Primary key for the table. rc_logid is a foreign key linking to this.

log_type
The type of the log action, or the "log type". You can filter by this type on Special:Log. Typical values are: block, delete, import, makebot, move, newusers, protect, renameuser, rights, upload ("uploaded" in example). Comparable to rc_log_type. Values on itwiki, as of November 2014, are (including now-obsolete logs and several extensions): MariaDB [itwiki_p]> SELECT DISTINCT log_type FROM logging; +---+ +---+ +---+ 16 rows in set (0.01 sec)
 * log_type     |
 * abusefilter  |
 * block        |
 * delete       |
 * gblblock     |
 * import       |
 * massmessage  |
 * merge        |
 * move         |
 * newusers     |
 * patrol       |
 * protect      |
 * renameuser   |
 * rights       |
 * spamblacklist |
 * thanks       |
 * upload       |

log_action
The action performed. There may be multiple actions possible for a given type: for example, an entry with the type delete may have the action delete or restore, etc. Comparable to rc_log_action. See also API:Logevents. See Manual:Log actions.

log_timestamp
The time the action was performed, in the timestamp format MediaWiki uses everywhere in the database: yyyymmddhhmmss ("14:18, 25 June 2008" in example). Comparable to rc_timestamp and rev_timestamp. If the log event is a file upload, this field is not necessarily the same as the generated by.

log_user
The id of the user who performed the action. This is a reference into the user table (the user id of "Jacksprat" in example). Comparable to rc_user and rev_user.

log_user_text
username of the user who performed the action, intended primarily for anonymous users, fillable by maintenance/populateLogUsertext.php. Comparable to rc_user_text and rev_user_text.

log_namespace
The namespace of the affected page. Together with log_title, this is a reference into the page table ("Image:Climb.jpg" in example). Comparable to rc_namespace.
 * Note: logging table may contain rows with log_namespace < 0:
 * Special:Renameuser with log_type and log_action being either "" or "renameuser"
 * Special:Userlogin with log_type and log_action being "newusers"

log_title
The title of the affected page. Together with log_namespace, this is a reference into the page table. Comparable to rc_title.

log_page
The page_id that this log action is about. Comparable to rc_cur_id and rev_page. In the case of a page move, this is set to the page_id of the redirect (although makes it the page_id of the moved page). If the page was moved without creating a redirect, then it is set to 0.

log_comment
The comment given for the action; that is the upload comment for uploads, the deletion comment for deletions, etc. Comparable to rc_comment and rev_comment.

log_params
Additional parameters, usually empty. Mirrored in rc_params. log_params is usually serialized, but not always; sometimes, for historical reasons, fields for log_params are separated by a newline. Anyone creating a new log type should use the PHP serialization.

For user blocks, log_params contains the duration of the block and other data, in human readable form, e.g. "2 weeks nocreate,noautoblock,noemail". For page moves, it contains a serialized array of the prefixed page title the page was moved to (i.e. in FULLPAGENAME format) and the boolean value of. For other examples, see Manual:Log parameters.

Since 1.19, data in log_params is in a different format. For instance, if you want to filter patrol/patrol log entries excluding autopatrol, pre-1.19 log entries need: log.log_params LIKE '%\n0' while entries added in 1.19 and further need (serialized PHP arrays): log.log_params LIKE '%"6::auto";i:0%'

Since 1.21, log_params is always serialised for newusers log too. An entry now looks like: mysql> select log_params, log_action from logging where log_user = 4681690; +--++ +--++ +--++ while it used to look like: mysql> select log_params, log_action from logging where log_user = 2298743; +++ +++ +++
 * log_params                      | log_action |
 * a:1:{s:9:"4::userid";i:4681690;} | autocreate |
 * log_params | log_action |
 * 2298743   | autocreate |

The numbers, e.g. the 4 in "4::userid", are used as the argument number for message keys (e.g. $1, $2,...) The numbering should start with number 4, as the first three parameters are hardcoded for every message. If there is no message key, then a number should not be used. Some data contained in log_params are also contained in to facilitate indexed queries. Log parameters are typically set using functions such as ManualLogEntry::setParameters and LogPage::addEntry.

log_deleted
Used with the revision delete system to delete log entries. This field is comparable to rc_deleted and rev_deleted. It is a bit field. Take the sum of the following to determine what it represents:
 * 1 Action deleted
 * 2 Comment deleted
 * 4 User deleted
 * 8 If the deleted information is restricted. If this field is not set, then only deletedhistory right is needed, otherwise you need suppressrevision right. (On Wikimedia wikis, this corresponds to if admins can view the entry, or if only oversighters can)
 * For example, if the value is 6 (4+2), then the action would be visible, but the comment and user would not be unless you had deletedhistory rights.

Schema
DESCRIBE logging; yields the following in MW 1.22:

+---+-+--+-++---+ +---+-+--+-++---+ +---+-+--+-++---+
 * Field        | Type                | Null | Key | Default        | Extra |
 * log_id       | int(10) unsigned    | NO   |     | 0              |       |
 * log_type     | varbinary(32)       | NO   |     |                |       |
 * log_action   | varbinary(32)       | NO   |     |                |       |
 * log_timestamp | varbinary(14)      | NO   |     | 19700101000000 |       |
 * log_user     | int(10) unsigned    | NO   |     | 0              |       |
 * log_namespace | int(11)            | NO   |     | 0              |       |
 * log_deleted  | tinyint(3) unsigned | NO   |     | 0              |       |
 * log_user_text | varbinary(255)     | NO   |     |                |       |
 * log_title    | varbinary(255)      | NO   |     |                |       |
 * log_comment  | varbinary(255)      | NO   |     |                |       |
 * log_params   | longblob            | NO   |     | NULL           |       |
 * log_page     | int(10) unsigned    | YES  |     | NULL           |       |

DESCRIBE logging; yields the following in MW 1.19-1.20:

+---+-+--+-+++ +---+-+--+-+++ +---+-+--+-+++
 * Field        | Type                | Null | Key | Default        | Extra          |
 * log_id       | int(10) unsigned    | NO   | PRI | NULL           | auto_increment |
 * log_type     | varbinary(32)       | NO   | MUL |                |                |
 * log_action   | varbinary(32)       | NO   |     |                |                |
 * log_timestamp | binary(14)         | NO   | MUL | 19700101000000 |                |
 * log_user     | int(10) unsigned    | NO   | MUL | 0              |                |
 * log_user_text | varbinary(255)     | NO   |     |                |                |
 * log_namespace | int(11)            | NO   | MUL | 0              |                |
 * log_title    | varbinary(255)      | NO   |     |                |                |
 * log_page     | int(10) unsigned    | YES  | MUL | NULL           |                |
 * log_comment  | varbinary(255)      | NO   |     |                |                |
 * log_params   | blob                | NO   |     | NULL           |                |
 * log_deleted  | tinyint(3) unsigned | NO   |     | 0              |                |

DESCRIBE logging; yields the following in MW 1.17:

+---+-+--+-+++ +---+-+--+-+++ +---+-+--+-+++
 * Field        | Type                | Null | Key | Default        | Extra          |
 * log_id       | int(10) unsigned    | NO   | PRI |                | auto_increment |
 * log_type     | varbinary(32)       | NO   | MUL |                |                |
 * log_action   | varbinary(32)       | NO   |     |                |                |
 * log_timestamp | binary(14)         | NO   | MUL | 19700101000000 |                |
 * log_user     | int(10) unsigned    | NO   | MUL | 0              |                |
 * log_user_text | varchar(255)       | NO   |     |                |                |
 * log_namespace | int(11)            | NO   | MUL | 0              |                |
 * log_title    | varchar(255)        | NO   |     |                |                |
 * log_page     | int(10) unsigned    | YES  | MUL | NULL           |                |
 * log_comment  | varchar(255)        | NO   |     |                |                |
 * log_params   | blob                | NO   |     |                |                |
 * log_deleted  | tinyint(3) unsigned | NO   |     | 0              |                |

+---+-+--+-+++ +---+-+--+-+++ +---+-+--+-+++
 * Field        | Type                | Null | Key | Default        | Extra          |
 * log_id       | int(10) unsigned    | NO   | PRI | NULL           | auto_increment |
 * log_type     | varbinary(32)       | NO   | MUL | NULL           |                |
 * log_action   | varbinary(32)       | NO   |     | NULL           |                |
 * log_timestamp | varbinary(14)      | NO   | MUL | 19700101000000 |                |
 * log_user     | int(10) unsigned    | NO   | MUL | 0              |                |
 * log_namespace | int(11)            | NO   | MUL | NULL           |                |
 * log_title    | varbinary(255)      | NO   |     |                |                |
 * log_comment  | varbinary(255)      | NO   |     |                |                |
 * log_params   | blob                | NO   |     | NULL           |                |
 * log_deleted  | tinyint(3) unsigned | NO   |     | 0              |                |
 * log_user_text | varbinary(255)     | NO   |     |                |                |
 * log_page     | int(10) unsigned    | YES  | MUL | NULL           |                |

+---+--+--+-+++ +---+--+--+-+++ +---+--+--+-+++
 * Field        | Type             | Null | Key | Default        | Extra          |
 * log_type     | varbinary(10)    | NO   | MUL |                |                |
 * log_action   | varbinary(10)    | NO   |     |                |                |
 * log_timestamp | binary(14)      | NO   | MUL | 19700101000000 |                |
 * log_user     | int unsigned     | NO   | MUL | 0              |                |
 * log_namespace | int(11)         | NO   | MUL | 0              |                |
 * log_title    | varchar(255)     | NO   |     |                |                |
 * log_comment  | varchar(255)     | NO   |     |                |                |
 * log_params   | blob             | NO   |     |                |                |
 * log_deleted  | tinyint unsigned | NO   |     | 0              |                |
 * log_id       | int unsigned     | NO   | PRI |                | auto_increment |

+---+--+--+-+++ +---+--+--+-+++ +---+--+--+-+++
 * Field        | Type             | Null | Key | Default        | Extra          |
 * log_type     | char(10)         | NO   | MUL |                |                |
 * log_action   | char(10)         | NO   |     |                |                |
 * log_timestamp | char(14)        | NO   | MUL | 19700101000000 |                |
 * log_user     | int unsigned     | NO   | MUL | 0              |                |
 * log_namespace | int(11)         | NO   | MUL | 0              |                |
 * log_title    | varchar(255)     | NO   |     |                |                |
 * log_comment  | varchar(255)     | NO   |     |                |                |
 * log_params   | blob             | NO   |     |                |                |

+---+--+--+-+++ +---+--+--+-+++ +---+--+--+-+++
 * Field        | Type             | Null | Key | Default        | Extra          |
 * log_type     | char(10)         | NO   | MUL |                |                |
 * log_action   | char(10)         | NO   |     |                |                |
 * log_timestamp | char(14)        | NO   |     | 19700101000000 |                |
 * log_user     | int unsigned     | NO   | MUL | 0              |                |
 * log_namespace | int(11)         | NO   | MUL | 0              |                |
 * log_title    | varchar(255)     | NO   |     |                |                |
 * log_comment  | varchar(255)     | NO   |     |                |                |
 * log_params   | blob             | NO   |     |                |                |