Logfiles for sessions
This commit is contained in:
@@ -21,6 +21,7 @@ class GameResponseService
|
||||
private SessionSettingRepository $sessionSettingRepository,
|
||||
private HubInterface $hub,
|
||||
private EntityManagerInterface $entityManager,
|
||||
private string $projectDir,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -44,7 +45,7 @@ class GameResponseService
|
||||
if(!$player)
|
||||
return ['error' => 'You are not in a game.'];
|
||||
|
||||
// TODO: Here i need to add a message handler to save the message in a big log.
|
||||
$this->logSessionActivity($player, 'PLAYER: ' . $message);
|
||||
|
||||
$data = [];
|
||||
|
||||
@@ -54,9 +55,43 @@ class GameResponseService
|
||||
$data = $this->checkConsoleCommando($message, $player);
|
||||
}
|
||||
|
||||
$responseLog = '';
|
||||
if (isset($data['result']) && is_array($data['result'])) {
|
||||
foreach ($data['result'] as $line) {
|
||||
if (is_array($line)) {
|
||||
$responseLog .= json_encode($line) . "\n";
|
||||
} elseif (is_string($line) || is_numeric($line)) {
|
||||
$responseLog .= (string)$line . "\n";
|
||||
}
|
||||
}
|
||||
} elseif (isset($data['error'])) {
|
||||
$responseLog = 'ERROR: ' . $data['error'];
|
||||
}
|
||||
|
||||
if ($responseLog !== '') {
|
||||
$this->logSessionActivity($player, 'SERVER: ' . trim($responseLog));
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function logSessionActivity(Player $player, string $content): void
|
||||
{
|
||||
$sessionId = $player->getSession()->getId();
|
||||
$username = $player->getUser()->getUsername();
|
||||
$logDir = $this->projectDir . '/var/log/sessions/' . $sessionId;
|
||||
|
||||
if (!is_dir($logDir)) {
|
||||
mkdir($logDir, 0777, true);
|
||||
}
|
||||
|
||||
$logFile = $logDir . '/' . $username . '.txt';
|
||||
$timestamp = date('Y-m-d H:i:s');
|
||||
$logMessage = sprintf("[%s] %s\n", $timestamp, $content);
|
||||
|
||||
file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
}
|
||||
|
||||
private function getRechten(Player $player): array
|
||||
{
|
||||
$settingName = SessionSettingType::tryFrom('RightsForPlayer' . $player->getScreen());
|
||||
|
||||
Reference in New Issue
Block a user