Logfiles for sessions

This commit is contained in:
Frank
2026-01-08 18:14:56 +01:00
parent 979623b35e
commit 9d9de0fd0d
8 changed files with 277 additions and 2 deletions
+36 -1
View File
@@ -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());