Codex (lat. roughly for "log") is a PHP library to read, parse, print and analyse log files to find problems and suggest possible solutions. This is the implementation for Minecraft logs including detectors, parsers and analysers to work with different Minecraft log files.
composer require aternos/codex-minecraft
This is only an introduction to the Minecraft implementation of Codex, for more information take a look at the Codex repository: aternosorg/codex
[see codex#logfile]
<?php
$logFile = new \Aternos\Codex\Log\File\StringLogFile("This is the log content");
$logFile = new \Aternos\Codex\Log\File\PathLogFile("/path/to/log");
$logFile = new \Aternos\Codex\Log\File\StreamLogFile(fopen("/path/to/log", "r"));
[see codex#log]
If you know the log type, you can directly create a new log object.
<?php
$log = new \Aternos\Codex\Minecraft\Log\Minecraft\Vanilla\VanillaServerLog();
$log->setLogFile($logFile);
[see codex#detection]
If you don't know the log type, you can let the Detective decide and create a log object.
<?php
$detective = new \Aternos\Codex\Minecraft\Detective\Detective();
$detective->setLogFile($logFile);
$log = $detective->detect();
[see codex#parsing]
<?php
$log->parse();
[see codex#analysing]
<?php
$analysis = $log->analyse();
The $analysis
object contains problems and information which you can get with the $analysis->getProblems()
and $analysis->getInformation()
functions
or all insights together with $analysis->getInsights()
. The problems contain solutions, a few of them could be solved automatically. They implement the
\Aternos\Codex\Analysis\AutomatableSolutionInterface
, e.g. FileDeleteSolution
.
<?php
foreach ($analysis->getInformation() as $information) {
echo $information->getLabel() . ": " . $information->getValue();
}
foreach ($analysis->getProblems() as $problem) {
echo $problem->getMessage();
foreach($problem->getSolutions() as $solution) {
echo $solution->getMessage();
}
}
The output messages, e.g. for problems and solutions are translated by the Translator
. The available
translations are in the lang
folder. They are not complete (yet) and you can help to translate them here: https://crowdin.com/project/aternos.
You can set the translation language with the setLanguage()
function before using any getMessage()
function.
See the current translation status here: TRANSLATION.md
<?php
\Aternos\Codex\Minecraft\Translator\Translator::getInstance()->setLanguage("de");