Manual:Logging to Special:Log/cs

From Linux Web Expert

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Tato stránka popisuje, jak protokolovat akce do Special:Log. (Přihlášení do protokolu aplikace je pokryto na Manual:Structured logging .)

Příklad

To ukazuje, jak byste kódovali položky Special:Log pro rozšíření. Zprávy protokolu se zobrazují na stránce Special:Log a lze je filtrovat například podle názvu protokolu, uživatele, názvu nebo rozsahu dat.

V souboru nastavení rozšíření

Na extension.json by mělo fungovat následující:

{
    "LogTypes": [ "foo" ],
    "LogNames": {
        "foo": "foo-name"
    },
    "LogHeaders": {
        "foo": "foo-header"
    },
    "LogActionsHandlers": {
        "foo/*": "LogFormatter"
    }
}

Pro základní protokoly je konfigurace v DefaultSettings.php .

$wgLogTypes[] = 'foo';

// You can still set
// $wgLogNames['foo'] = 'foo-name';
// $wgLogHeaders['foo'] = 'foo-header';
// 
// But you don't need to, if you follow this naming convention for your i18n messages:
//
// log-name-foo
//   for the Special:Log log name that appears in the drop-down on the Special:Log page
//
// log-description-foo
//   for the Special:Log description that appears on the Special:Log page when you filter 
//   logs on this specific log name

$wgLogActionsHandlers['foo/bar'] = 'LogFormatter';

// Or if you want catch-all, do:
$wgLogActionsHandlers['foo/*'] = 'LogFormatter';

// Or if you need some extra logic, you can write your own formatter
// (subclassing LogFormatter) and do:
$wgLogActionsHandlers['foo/*'] = 'FooLogFormatter';

V souboru i18n/en.json

{
	"log-name-foo": "Foo log",
	"log-description-foo": "These events track when Foo events happen in the system.",
	"logentry-foo-bar": "$1 {{GENDER:$2|did bar}} to page $3"
}

Dokumentace ke zprávě (qqq.json):

{
	"log-name-foo": "The Special:Log log name that appears in the drop-down on the Special:Log page",
	"log-description-foo": "The Special:Log description that appears on the Special:Log page when you filter logs on this specific log name",
	"logentry-foo-bar": "The template of the log entry message"
}

V kódu rozšíření

// Anywhere in your code where you want to generate a log entry

$logEntry = new ManualLogEntry( 'foo', 'bar' ); // Log action 'bar' in the Special:Log for 'foo'
$logEntry->setPerformer( $user ); // User object, the user who performed this action
$logEntry->setTarget( $this ); // The page that this log entry affects, a Title object
$logEntry->setComment( $reason ); // Optional, user provided comment

// Optionally, add additional parameters for use in the log entry’s i18n message.
// Numbering should start from 4 and can be used in the message as $4, $5 and so on.
//
// Indexes $1, $2, and $3 are reserved
// and provide the username and target page parameters for the messages.
// $1 is a reference to the user page and user talk page in the wiki
// $2 is used to determine the gender of the user for any gender specific messages
// $3 is a reference to the page on which the action took place
//
// If you want to store stuff that should not be available in messages, don’t
// prefix the array key with a number and don’t use the colons.
// 
// The format is index:formatspecifier:name.
// Format specifier is currently unused, but in future you could say for example
// that this param is a number, format it according to the user language.
// Name is just for giving identifier for the value, and helps to debug issues
// versus unindexed list of parameters.
$logEntry->setParameters( [
  '4::paramname' => 'customparam',
  'hiddenparam' => 'ugly stuff',
] );

// We're not done yet, we need to insert the log entry into the database.
// Insert adds it to the logging table and returns the id of that log entry.
$logid = $logEntry->insert();

// Optionally, publish the log entry in recent changes and the UDP feed of recent changes
// if we want. UDP feed is mainly used for echoing the recent change items into IRC.
// publish() takes second param with values 'rcandudp' (default), 'rc' and 'udp'.
$logEntry->publish( $logid );

Přidávání odkazů

Chcete-li přidat odkaz na položky protokolu, měli byste zadat název stránky atd. v parametrech protokolu a naformátovat jej ve vašem LogFormatter pomocí makePageLink(). U jiných metod bude výstup, který není html (jako UDP feed do IRC), narušen.

Viz TranslateLogFormatter pro příklad LogFormatter s odkazy.

Související odkazy