AppendLogs.php 1.74 KB
Newer Older
Dominik Hebeler's avatar
Dominik Hebeler committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;

class AppendLogs extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'logs:gather';
16
    const LOGKEY = "metager.logs.2021";
Dominik Hebeler's avatar
Dominik Hebeler committed
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Retrieves all Log Entries from Redis and writes them to file';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
42
43
        $this->handleMGLogs();
    }
44

45
46
47
48
    private function handleMGLogs()
    {
        $redis = null;
        
49
50
        $redis = Redis::connection(config('cache.stores.redis.connection'));

51
        if ($redis === null) {
52
            $this->error("No valid Redis Connection specified");
53
54
            return;
        }
Dominik Hebeler's avatar
Dominik Hebeler committed
55
56

        $elements = [];
57
58
59
        $elementCount = $redis->llen(\App\Console\Commands\AppendLogs::LOGKEY);
        $elements = $redis->lpop(\App\Console\Commands\AppendLogs::LOGKEY, $elementCount);

Dominik Hebeler's avatar
Dominik Hebeler committed
60
61
62
63
        if (!is_array($elements) || sizeof($elements) <= 0) {
            return;
        }
        if (file_put_contents(\App\MetaGer::getMGLogFile(), implode(PHP_EOL, $elements) . PHP_EOL, FILE_APPEND) === false) {
64
            $this->error("Konnte Log Zeile(n) nicht schreiben");
65
            $redis->lpush(\App\Console\Commands\AppendLogs::LOGKEY, array_reverse($elements));
Dominik Hebeler's avatar
Dominik Hebeler committed
66
        } else {
67
            $this->info("Added " . sizeof($elements) . " lines to todays log!");
Dominik Hebeler's avatar
Dominik Hebeler committed
68
69
70
        }
    }
}