{"id":53715,"date":"2022-08-29T13:04:25","date_gmt":"2022-08-29T12:04:25","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=53715&#038;preview=true&#038;preview_id=53715"},"modified":"2023-08-29T06:33:19","modified_gmt":"2023-08-29T05:33:19","slug":"laravel-logging","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/","title":{"rendered":"Laravel Logging: Alles, was du wissen musst"},"content":{"rendered":"<p>Bei der Entwicklung einer modernen Anwendung sollte die Protokollierung ganz oben auf der Priorit\u00e4tenliste stehen.<\/p>\n<p>Die Protokollierung bietet eine M\u00f6glichkeit, deine Anwendung sowohl in der Entwicklung als auch in der Produktion zu visualisieren und erm\u00f6glicht Transparenz und Sichtbarkeit. Mit einer gut strukturierten Protokollierung k\u00f6nnen moderne Anwendungen leichter gewartet werden, da wir proaktiv Fehlerstellen und Leistungsengp\u00e4sse in unserer Anwendung erkennen k\u00f6nnen.<\/p>\n<p>Das Laravel-Framework verf\u00fcgt \u00fcber ein robustes Logging-System, das alle H\u00fcrden bei der Konfiguration eines gut strukturierten Logging-Systems von Haus aus meistert. Dieses neue Logging-System, das mit Laravel 6.5 eingef\u00fchrt wurde, ist sehr leistungsf\u00e4hig und wir werden es in diesem Artikel genauer untersuchen.<\/p>\n\n<p>In diesem Artikel geht es um die Grundlagen des Laravel-Loggings und warum du Laravel-Logging in deinem n\u00e4chsten Projekt einsetzen solltest. Wir werden das strukturierte Logging und das zentralisierte Logging im Detail besprechen. Au\u00dferdem erfahren wir, wie du das Laravel-Logging implementierst, indem du eine Todo-Anwendung erstellst.<\/p>\n<p>Du hast mehr von diesem Artikel, wenn du bereits \u00fcber die folgenden Kenntnisse verf\u00fcgst:<\/p>\n<ul>\n<li>Gute Kenntnisse in der Webentwicklung<\/li>\n<li>Grundlegendes <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-laravel\/\">Verst\u00e4ndnis von Laravel<\/a><\/li>\n<li>Erstellen von Apps mit Laravel<\/li>\n<\/ul>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Was ist Laravel Logging?<\/h2>\n<p>Bei Laravel Logging geht es darum, wie Laravel das Logging oder die automatische Problemmeldung mit Hilfe eines viralen PHP-Logging-Systems namens Monolog handhabt. Aufgrund der Laravel-Philosophie, beliebte bestehende Bibliotheken f\u00fcr die Implementierung verschiedener Framework-Funktionen zu nutzen, verwendet Laravel Monolog f\u00fcr alle Logging-Anforderungen.<\/p>\n<p><a href=\"https:\/\/seldaek.github.io\/monolog\/\" target=\"_blank\" rel=\"noopener noreferrer\">Monolog<\/a> ist eine \u00e4u\u00dferst flexible und beliebte PHP-Logging-Bibliothek, die wir so konfigurieren k\u00f6nnen, dass sie deine Logs an Dateien, Sockets, Datenbanken und andere Webservices sendet. Monolog bietet eine vertraute Schnittstelle f\u00fcr das Schreiben von Logs aus Standard-Textdateien bis hin zu fortschrittlichen Log-Management-Diensten von Drittanbietern. Laravel richtet Monolog normalerweise so ein, dass es eine Standardkonfigurationsdatei f\u00fcr das Logging verwendet.<\/p>\n<p>Weitere Informationen \u00fcber Monolog und seine Funktionen findest du in der <a href=\"https:\/\/seldaek.github.io\/monolog\/\" target=\"_blank\" rel=\"noopener noreferrer\">offiziellen Dokumentation<\/a>, da dies den Rahmen dieses Artikels sprengen w\u00fcrde.<\/p>\n<p>Bevor wir uns mit der Konfiguration und Implementierung des Laravel-Loggings mit Monolog besch\u00e4ftigen, wollen wir mehr \u00fcber die Gr\u00fcnde f\u00fcr die Verwendung des Laravel-Loggings und die verschiedenen Arten erfahren.<\/p>\n<h2>Warum Laravel Logging verwenden?<\/h2>\n<p>Warum ist Logging notwendig?<\/p>\n<p>Im Manifest der <a href=\"https:\/\/12factor.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">Zw\u00f6lf-Faktoren-App<\/a> wird das Logging als eines der wichtigsten Anliegen einer modernen Anwendung behandelt, da Logging ein Schl\u00fcssel zur Leistung und \u00dcberwachung ist.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/de\/docs\/wordpress-hosting\/wordpress-fehlerbehebung\/server-protokolle-anzeigen\/\">Logs<\/a> helfen dabei, Fehler, die in der Produktion auftreten, im Detail zu verstehen und herauszufinden, woher sie kommen. Mit den richtigen Log-Strukturen k\u00f6nnen sie au\u00dferdem den jeweiligen Nutzer, die Aktion, die den Fehler verursacht hat, und die m\u00f6gliche L\u00f6sung f\u00fcr eine schnellere Fehlerbehebung und Wartung aufzeigen.<\/p>\n<p>Die strukturierte Protokollierung ist ein Lebensretter in Produktionsanwendungen, denn sie hilft bei der Fehlersuche und der L\u00f6sung von Problemen in der Produktion. Au\u00dferdem kannst du alle deine Log-Meldungen in Echtzeit mit speziellen Logging-Tools f\u00fcr Live-Analysen und Berichte \u00fcberwachen und sammeln.<\/p>\n<p>Aus diesen Gr\u00fcnden solltest du der strukturierten Protokollierung bei deinem n\u00e4chsten modernen Anwendungsprojekt oberste Priorit\u00e4t einr\u00e4umen.<\/p>\n<p>Schauen wir uns einen \u00dcberblick \u00fcber die verschiedenen Logging-Stile an.<\/p>\n<h2>Grundlagen des Laravel-Loggings<\/h2>\n<p>Wenn du die Grundlagen des Loggings kennst, wirst du verstehen, wie Laravel das Logging handhabt und wie du deine strukturierten Logging-Praktiken verbessern kannst.<\/p>\n<p>Schauen wir uns zwei wesentliche Konzepte des Loggings an, um besser zu verstehen, wie wir unsere Logging-Verfahren implementieren k\u00f6nnen.<\/p>\n<h3>Laravel Strukturierte Protokollierung<\/h3>\n<p>In der Softwareentwicklung bedeutet strukturiertes Logging die Implementierung eines vorgegebenen und konsistenten Nachrichtenformats f\u00fcr Anwendungsprotokolle. Dieses Format erm\u00f6glicht es, die Meldungen als Daten zu behandeln, die viel besser \u00fcberwacht, bearbeitet und visualisiert werden k\u00f6nnen als das normale Textformat.<\/p>\n<p>Du musst in deiner modernen Anwendungsentwicklung einen strukturierten Logging-Ansatz einf\u00fchren, denn Logdateien sind f\u00fcr Entwicklerinnen und Entwickler von entscheidender Bedeutung, wenn in deiner Anwendung in der Produktion etwas schief l\u00e4uft.<\/p>\n<p>Da Laravel Monolog verwendet, k\u00f6nnen Entwickler\/innen schnell eine strukturierte Protokollierung implementieren, indem sie den Logger so konfigurieren, dass er bestimmte Arten von Informationen empf\u00e4ngt, die Protokolldateien in verschiedenen Formaten speichert und die Protokolle zur Visualisierung an verschiedene Log-Management-Dienste von Drittanbietern sendet.<\/p>\n<h3>Zentrales Logging in Laravel<\/h3>\n<p>Bei einem zentralisierten Logging-System werden die Logs aus verschiedenen Quellen zur einfachen Konsolidierung und Visualisierung an zentrale Log-Management-L\u00f6sungen (CLM) gesendet. CLM ist jedoch eine spezielle Logger-L\u00f6sung, die Log-Meldungen aus verschiedenen Quellen sammelt und die Daten f\u00fcr eine einfache Verarbeitung und Visualisierung konsolidiert.<\/p>\n<p>Neben der Datenerfassung soll CLM auch die Analyse der Logdaten und die \u00fcbersichtliche Darstellung der Daten nach der Analyse unterst\u00fctzen.<\/p>\n<h3>Strukturiertes Logging vs. Basic Logging<\/h3>\n<p>Schauen wir uns den Unterschied zwischen strukturiertem Logging und einfachem (unstrukturiertem) Logging an und warum du strukturiertes Logging in deinem Laravel-Projekt verwenden solltest.<\/p>\n<h4>Einfache Protokollierung<\/h4>\n<p>Bei der einfachen Protokollierung werden die Protokolldateien in einem Rohformat mit begrenzten Daten zur Abfrage und Identifizierung einzelner Protokolle gespeichert.<\/p>\n<p>Bei der Verwendung von Basic Logging k\u00f6nnen <a href=\"https:\/\/kinsta.com\/de\/\">Entwickler<\/a> keine Analysetools von Drittanbietern zum Lesen, Anzeigen und Analysieren von Logs verwenden, es sei denn, sie entwickeln ein eigenes Tool oder bleiben bei einem begrenzten Tool, das ihr Log-Format unterst\u00fctzt.<\/p>\n<p>Es gibt drei wichtige Gr\u00fcnde, die gegen die Verwendung von Basic Logging sprechen:<\/p>\n<ol>\n<li>Zentralisierte Log-Management-Systeme k\u00f6nnen ohne zus\u00e4tzliche Unterst\u00fctzung nicht mit den Daten arbeiten.<\/li>\n<li>Um die Daten einer einfachen Logging-L\u00f6sung zu lesen und zu analysieren, ist eine ma\u00dfgeschneiderte L\u00f6sung erforderlich.<\/li>\n<li>F\u00fcr Administratoren kann es eine Herausforderung sein, einfache Logging-Daten zu lesen, da sie roh und unstrukturiert sind.<\/li>\n<\/ol>\n<h4>Strukturiertes Logging<\/h4>\n<p>Strukturiertes Logging spart Entwicklern Zeit, indem sie Open-Source-Analyse-Tools von Drittanbietern verwenden, die eine Standard-Protokollstruktur zum Lesen, Anzeigen und Analysieren von Protokollen unterst\u00fctzen.<\/p>\n<p>Logs sind hilfreich, wenn sie die richtigen, unten aufgef\u00fchrten Daten enthalten, und das ist das Ziel des strukturierten Loggings. Mit den Daten aus der strukturierten Protokollierung k\u00f6nnen wir Dashboards, Grafiken, Diagramme und andere hilfreiche Visualisierungen erstellen, um den Zustand der Anwendung zu ermitteln.<\/p>\n<p>Dies sind nur einige Beispiele f\u00fcr Informationen, die in strukturierte Logmeldungen aufgenommen werden k\u00f6nnen. Dar\u00fcber hinaus kannst du die Daten vollst\u00e4ndig an deine Bed\u00fcrfnisse anpassen.<\/p>\n<p>Hier sind einige Beispiele f\u00fcr Daten, die du mit der strukturierten Protokollierung sammeln kannst:<\/p>\n<ol>\n<li>Der Port, der zur Ausf\u00fchrung der Funktion verwendet wurde<\/li>\n<li>Das Datum und die Uhrzeit des Ereignisses<\/li>\n<li>Den Benutzernamen oder die ID des Clients<\/li>\n<li>Eine Beschreibung des Ereignisses (Protokollnachricht)<\/li>\n<li>Das Protokoll, das zur Ausf\u00fchrung der Funktion verwendet wurde<\/li>\n<li>Der Ort des ausgel\u00f6sten Ereignisses (API oder laufende App angeben)<\/li>\n<li>Die eindeutige Ereignis-ID<\/li>\n<li>Die Art der ausgel\u00f6sten Aktion (Protokollebene)<\/li>\n<\/ol>\n<p>Die Logs sollten gen\u00fcgend Daten enthalten, um die L\u00f6sung oder den Grund f\u00fcr das Log-Ereignis leicht zu visualisieren. Beachte auch, dass du nicht alle Arten von Informationen wie Passw\u00f6rter oder sensible Daten in den Protokollen speichern solltest.<\/p>\n<p>Nachdem wir nun einen Einblick in das Laravel-Logging bekommen haben, wollen wir uns nun der Implementierung des Laravel-Loggings widmen, indem wir eine Anwendung mit Logging als B\u00fcrger erster Klasse erstellen.<\/p>\n<h2>Wie man Laravel Logging mit Todo App implementiert<\/h2>\n<p>Jetzt wenden wir an, was wir bisher gelernt haben, indem wir ein neues Laravel-Projekt erstellen und Laravel-Logging implementieren.<\/p>\n<p>Wenn du noch nie mit Laravel gearbeitet hast, kannst du nachlesen, <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-laravel\/\">was Laravel ist<\/a>, oder einen Blick auf unsere Liste mit <a href=\"https:\/\/kinsta.com\/de\/blog\/laravel-tutorial\/\">hervorragenden Laravel-Tutorials<\/a> werfen, um den Einstieg zu finden.<\/p>\n<h3>Laravel einrichten<\/h3>\n<p>Zuerst erstellen wir mit dem unten stehenden Befehl eine neue Laravel-Instanz. Du kannst in der <a href=\"https:\/\/laravel.com\/docs\/8.x\/installation\" target=\"_blank\" rel=\"noopener noreferrer\">offiziellen Dokumentation<\/a> nachschauen, um mehr zu erfahren.<\/p>\n<p>\u00d6ffne deine Konsole und navigiere zu dem Ort, an dem du deine PHP-Projekte speicherst, bevor du die unten stehenden Befehle ausf\u00fchrst. Vergewissere dich, dass der <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> installiert und richtig konfiguriert ist.<\/p>\n<pre><code class=\"language-json\">composer create-project laravel\/laravel laravel-logging-app\ncd laravel-logging-app \/\/ Change directory to current Laravel installation\nphp artisan serve \/\/ Start Laravel development server<\/code><\/pre>\n<h3>Konfigurieren und Seeding der Datenbank<\/h3>\n<p>Als N\u00e4chstes richten wir unsere Datenbank ein, erstellen ein neues <code>Todo<\/code> Modell und legen 200 Fake-Daten zum Testen an.<\/p>\n<p>\u00d6ffne deinen Datenbank-Client und erstelle eine neue Datenbank. Wir tun dasselbe mit dem Namen <code>laravel_logging_app_db<\/code> und f\u00fcllen dann unsere <strong>.env-Datei<\/strong> mit den Datenbank-Anmeldedaten:<\/p>\n<pre><code class=\"language-bash\">DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=laravel_logging_app_db\nDB_USERNAME=\/\/DB USERNAME HERE\nDB_PASSWORD=\/\/DB PASSWORD HERE<\/code><\/pre>\n<p>Als N\u00e4chstes f\u00fchren wir den folgenden Befehl aus, um die Migration und das Modell <code>Todo<\/code> gleichzeitig zu erstellen:<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Todo -mc<\/code><\/pre>\n<p>\u00d6ffne die neu erstellte Migration <strong>database\/migrations\/xxx-create-todos-xxx.php<\/strong> und f\u00fcge die folgenden Codes ein:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse IlluminateSupportFacadesSchema;\nuse IlluminateDatabaseSchemaBlueprint;\nuse IlluminateDatabaseMigrationsMigration;\nclass CreateTodosTable extends Migration\n{\n  \/**\n  * Run the migrations.\n  *\n  * @return void\n  *\/\n  public function up()\n  {\n    Schema::create('todos', function (Blueprint $table) {\n      $table-&gt;id();\n      $table-&gt;string('title');\n      $table-&gt;text('description')-&gt;nullable();\n      $table-&gt;boolean('is_completed')-&gt;default(false);\n      $table-&gt;timestamps();\n    });\n  }\n  \/**\n  * Reverse the migrations.\n  *\n  * @return void\n  *\/\n  public function down()\n  {\n    Schema::dropIfExists('todos');\n  }\n}<\/code><\/pre>\n<p>Du kannst deine Todos mit Faker-Daten seeden, indem du lernst, <a href=\"https:\/\/laravel.com\/docs\/8.x\/seeding\">deine Datenbanken in Laravel mit Faker zu seeden<\/a>.<\/p>\n<h3>\u00dcberblick \u00fcber Monolog<\/h3>\n<p>Mit Laravel Monolog kannst du strukturierte Logs streamen und an verschiedene Kan\u00e4le wie E-Mails, Slack, Dateien, Sockets, Posteing\u00e4nge, Datenbanken und verschiedene Webservices senden. In Laravel kannst du die Protokollierung in einer einzigen Konfigurationsdatei konfigurieren, die sich in <strong>config\/logging.php<\/strong> befindet.<\/p>\n<p>Die Konfigurationsdatei enth\u00e4lt vordefinierte Log-Treiber, aus denen du ausw\u00e4hlen kannst. Der Standardtreiber ist <code>stack<\/code>, der den Kanal <code>single<\/code> verwendet, um in eine <strong>laravel.log-Datei<\/strong> im Ordner <strong>storage\/logs<\/strong> zu loggen. Wir werden die strukturierte Protokollierung anhand einiger der <a href=\"https:\/\/laravel.com\/docs\/8.x\/logging#available-channel-drivers\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel-Log-Treiber<\/a> demonstrieren.<\/p>\n<p>Laravel bietet eine <a href=\"https:\/\/laravel.com\/docs\/8.x\/logging#writing-log-messages\" target=\"_blank\" rel=\"noopener noreferrer\">Handvoll Methoden<\/a>, um mit Logs zu interagieren, wie wir in der Controller-Datei <strong>TodosController.php<\/strong> kurz demonstrieren.<\/p>\n<h3>Schreiben von Log-Meldungen im Controller<\/h3>\n<p>\u00d6ffne die neu erstellte Controller-Datei <strong>TodosController.php<\/strong> im Ordner <strong>app\/Http\/Controllers<\/strong> und f\u00fcge die folgenden Codes ein:<\/p>\n<pre><code class=\"language-php\">\n&lt;?php\nnamespace AppHttpControllers;\nuse AppModelsTodo;\nuse IlluminateHttpRequest;\nuse AppHttpControllersController;\nuse IlluminateSupportFacadesAuth;\nuse IlluminateSupportFacadesLog;\nclass TodosController extends Controller\n{\n  public function index(Request $request)\n  {\n    $todos = Todo::all();\n    Log::warning('User is accessing all the Todos', ['user' =&gt; Auth::user()-&gt;id]);\n    return view('dashboard')-&gt;with(['todos' =&gt; $todos]);\n  }\n  public function byUserId(Request $request)\n  {\n    $todos = Todo::where('user_id', Auth::user()-&gt;id)-&gt;get();\n    Log::info('User is accessing all his todos', ['user' =&gt; Auth::user()-&gt;id]);\n    return view('dashboard')-&gt;with(['todos' =&gt; $todos]);\n  }\n  public function show(Request $request, $id)\n  {\n    $todo = Todo::find($id);\n    Log::info('User is accessing a single todo', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $todo-&gt;id]);\n    return view('show')-&gt;with(['todo' =&gt; $todo]);\n  }\n  public function update(Request $request, $id)\n  {\n    # Validations before updating\n    $todo = Todo::where('user_id', Auth::user()-&gt;id)-&gt;where('id', $id)-&gt;first();\n    Log::warning('Todo found for updating by user', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $todo]);\n    if ($todo) {\n      $todo-&gt;title = $request-&gt;title;\n      $todo-&gt;desc = $request-&gt;desc;\n      $todo-&gt;status = $request-&gt;status == 'on' ? 1 : 0;\n      if ($todo-&gt;save()) {\n        Log::info('Todo updated by user successfully', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $todo-&gt;id]);\n        return view('show', ['todo' =&gt; $todo]);\n      }\n      Log::warning('Todo could not be updated caused by invalid todo data', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $todo-&gt;id, 'data' =&gt; $request-&gt;except('password')]);\n      return; \/\/ 422\n    }\n    Log::error('Todo not found by user', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $id]);\n    return; \/\/ 401\n  }\n  public function store(Request $request)\n  {\n    Log::warning('User is trying to create a single todo', ['user' =&gt; Auth::user()-&gt;id, 'data' =&gt; $request-&gt;except('password')]);\n    # Validations before updating\n    $todo = new Todo;\n    $todo-&gt;title = $request-&gt;title;\n    $todo-&gt;desc = $request-&gt;desc;\n    $todo-&gt;user_id = Auth::user()-&gt;id;\n    if ($todo-&gt;save()) {\n      Log::info('User create a single todo successfully', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $todo-&gt;id]);\n      return view('show', ['todo' =&gt; $todo]);\n    }\n    Log::warning('Todo could not be created caused by invalid todo data', ['user' =&gt; Auth::user()-&gt;id, 'data' =&gt; $request-&gt;except('password')]);\n    return; \/\/ 422\n  }\n  public function delete(Request $request, $id)\n  {\n    Log::warning('User is trying to delete a single todo', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $id]);\n    $todo = Todo::where('user_id', Auth::user()-&gt;id)-&gt;where('id', $id)-&gt;first();\n    if ($todo) {\n      Log::info('User deleted a single todo successfully', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $id]);\n      $todo-&gt;delete();\n      return view('index');\n    }\n    Log::error('Todo not found by user for deleting', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $id]);\n    return; \/\/ 404\n  }\n}<\/code><\/pre>\n<p>Innerhalb jeder der Methoden in <code>TodoController<\/code> haben wir die <code>Log<\/code> Fassade mit einem bestimmten Log-Level hinzugef\u00fcgt, um die Art des Fehlers zu definieren, den wir senden wollen. Im Folgenden findest du ein Beispiel f\u00fcr die Verwendung der<\/p>\n<p>Log-Fassade in der Methode <code>store<\/code>.<\/p>\n<pre><code class=\"language-php\">public function store(Request $request)\n{\n  Log::warning('User is trying to create a single todo', ['user' =&gt; Auth::user()-&gt;id, 'data' =&gt; $request-&gt;except('password')]);\n  # Validations before updating\n  $todo = new Todo;\n  $todo-&gt;title = $request-&gt;title;\n  $todo-&gt;desc = $request-&gt;desc;\n  $todo-&gt;user_id = Auth::user()-&gt;id;\n  if ($todo-&gt;save()) {\n    Log::info('User create a single todo successfully', ['user' =&gt; Auth::user()-&gt;id, 'todo' =&gt; $todo-&gt;id]);\n    return view('show', ['todo' =&gt; $todo]);\n  }\n  Log::warning('Todo could not be created caused by invalid todo data', ['user' =&gt; Auth::user()-&gt;id, 'data' =&gt; $request-&gt;except('password')]);\n  return; \/\/ 422\n}<\/code><\/pre>\n<h3>Formatierung von Log-Meldungen<\/h3>\n<p>Angenommen, du bist mit der von Laravel standardm\u00e4\u00dfig verwendeten <code>LineFormatter<\/code> nicht zufrieden, die sehr gut lesbare und hilfreiche Meldungen liefert.<\/p>\n<p>In diesem Fall kannst du ganz einfach ein benutzerdefiniertes Formatierungsobjekt erstellen, das auf deinen Anwendungsfall zugeschnitten ist, und es in der gesamten Anwendung verwenden.<\/p>\n<p>In der offiziellen Monolog-Dokumentation findest du eine vollst\u00e4ndige Liste der <a href=\"https:\/\/github.com\/Seldaek\/monolog\/blob\/main\/doc\/02-handlers-formatters-processors.md#formatters\" target=\"_blank\" rel=\"noopener noreferrer\">verf\u00fcgbaren Formatierer<\/a> und kannst ganz einfach einen benutzerdefinierten Formatierer erstellen.<\/p>\n<p>In Laravel kannst du jeden Treiber so einstellen, dass er deinen benutzerdefinierten Formatter verwendet, indem du ihn in der Konfigurationsdatei <strong>config\/logging.php<\/strong> in die Liste eintr\u00e4gst (siehe unten):<\/p>\n<pre><code class=\"language-php\">'daily' =&gt; [\n  'driver' =&gt; 'daily',\n  'path' =&gt; storage_path('logs\/laravel.log'),\n  'level' =&gt; env('LOG_LEVEL', 'debug'),\n  'days' =&gt; 14,\n  'formatter' =&gt; MonologFormatterHtmlFormatter::class,\n  'formatter_with' =&gt; [\n    'dateFormat' =&gt; 'Y-m-d',\n  ]\n],<\/code><\/pre>\n<p>Das obige Beispiel f\u00fcgt dem Treiber <code>daily<\/code> ein benutzerdefiniertes <code>MonologFormatterHtmlFormatter<\/code> hinzu und verwendet die Schl\u00fcssel <code>formatter<\/code> und <code>formatter_with<\/code> in der Kanalkonfiguration <code>daily<\/code>, um das Datumsformat zu \u00e4ndern.<\/p>\n<h3>Senden von Logs an verschiedene Kan\u00e4le<\/h3>\n<p>Mit Hilfe von Monolog kann Laravel Logs an verschiedene Kan\u00e4le und mehrere Kan\u00e4le gleichzeitig senden.<\/p>\n<p>Wir zeigen dir, wie du mit diesen einfachen Schritten Logs an unseren Slack-Kanal senden kannst. \u00c4ndere den Standard-Log-Kanal in Slack und f\u00fcge die <a href=\"https:\/\/api.slack.com\/messaging\/webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">Slack Webhook<\/a> URL in deine <strong>.env-Datei<\/strong> ein.<\/p>\n<pre><code class=\"markdown\">LOG_CHANNEL=slack\nLOG_SLACK_WEBBHOOK_URL= Slack_webhook_url_here<\/code><\/pre>\n<p>Als N\u00e4chstes testest du deine Konfiguration, indem du eine Nachricht in deiner Anwendung mit der <code>Log<\/code> Fassade wie unten gezeigt protokollierst:<\/p>\n<pre><code class=\"markdown\">Log::debug(\"The API instance is on fire caused by:\", ['user' =&gt; 1])<\/code><\/pre>\n<p>Du kannst deinen Slack-Kanal \u00f6ffnen, um zu pr\u00fcfen, ob der Fehler in dem gew\u00fcnschten Kanal, den du bei der Erstellung der Webhook-URL angegeben hast, ausgegeben wird.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Die Protokollierung ist genauso wichtig wie jeder andere Faktor deiner Anwendung, wenn nicht sogar noch wichtiger. Deshalb wird sie im Twelve-Factor App Manifesto als einer der wichtigsten Punkte f\u00fcr jede moderne Anwendung genannt.<\/p>\n<p>Mit einer effektiven Protokollierung kannst du Fehler und Defekte, die in deiner produktionsreifen Anwendung auftreten, leicht lesen, anzeigen und visualisieren. Deshalb ist es wichtig, dass du schon zu Beginn des Projekts eine strukturierte Protokollierung in deine Anwendung einbaust.<\/p>\n\n<p>In diesem Artikel haben wir uns mit der Laravel-Protokollierung besch\u00e4ftigt und erkl\u00e4rt, warum du sie in deinem n\u00e4chsten Projekt einsetzen solltest. Wir haben sowohl das strukturierte Logging als auch das zentralisierte Logging im Detail besprochen. Au\u00dferdem haben wir gelernt, wie man die Laravel-Protokollierung durch den Aufbau einer Todo-Anwendung implementiert.<\/p>\n<p>Wie willst du Logging in deine n\u00e4chste Anwendung integrieren? Lass es uns im Kommentarbereich wissen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei der Entwicklung einer modernen Anwendung sollte die Protokollierung ganz oben auf der Priorit\u00e4tenliste stehen. Die Protokollierung bietet eine M\u00f6glichkeit, deine Anwendung sowohl in der Entwicklung &#8230;<\/p>\n","protected":false},"author":193,"featured_media":53876,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[400,769,810,257,38],"topic":[958,969],"class_list":["post-53715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-logging","tag-monitoring","tag-performance","tag-php","topic-laravel","topic-php-frameworks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Laravel Logging: Alles, was du wissen musst<\/title>\n<meta name=\"description\" content=\"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel Logging: Alles, was du wissen musst\" \/>\n<meta property=\"og:description\" content=\"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-29T12:04:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-29T05:33:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Solomon Eseme\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kaperskyguru\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Solomon Eseme\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/\"},\"author\":{\"name\":\"Solomon Eseme\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\"},\"headline\":\"Laravel Logging: Alles, was du wissen musst\",\"datePublished\":\"2022-08-29T12:04:25+00:00\",\"dateModified\":\"2023-08-29T05:33:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/\"},\"wordCount\":1977,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png\",\"keywords\":[\"laravel\",\"logging\",\"monitoring\",\"performance\",\"php\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/\",\"name\":\"Laravel Logging: Alles, was du wissen musst\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png\",\"datePublished\":\"2022-08-29T12:04:25+00:00\",\"dateModified\":\"2023-08-29T05:33:19+00:00\",\"description\":\"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png\",\"width\":1460,\"height\":730,\"caption\":\"Laravel Logging: Alles, was du wissen musst\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Laravel Logging: Alles, was du wissen musst\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\",\"name\":\"Solomon Eseme\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"caption\":\"Solomon Eseme\"},\"description\":\"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me\",\"sameAs\":[\"https:\/\/masteringbackend.com\",\"https:\/\/linkedin.com\/in\/solomoneseme\",\"https:\/\/x.com\/kaperskyguru\"],\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/solomoneseme\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Laravel Logging: Alles, was du wissen musst","description":"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/","og_locale":"de_DE","og_type":"article","og_title":"Laravel Logging: Alles, was du wissen musst","og_description":"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.","og_url":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2022-08-29T12:04:25+00:00","article_modified_time":"2023-08-29T05:33:19+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png","type":"image\/png"}],"author":"Solomon Eseme","twitter_card":"summary_large_image","twitter_description":"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png","twitter_creator":"@kaperskyguru","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Solomon Eseme","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/"},"author":{"name":"Solomon Eseme","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2"},"headline":"Laravel Logging: Alles, was du wissen musst","datePublished":"2022-08-29T12:04:25+00:00","dateModified":"2023-08-29T05:33:19+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/"},"wordCount":1977,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png","keywords":["laravel","logging","monitoring","performance","php"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/","url":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/","name":"Laravel Logging: Alles, was du wissen musst","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png","datePublished":"2022-08-29T12:04:25+00:00","dateModified":"2023-08-29T05:33:19+00:00","description":"Logging ist wichtig, um den Zustand und die Effektivit\u00e4t deiner Entwicklungsprojekte zu \u00fcberwachen. Lerne, wie du strukturiertes Logging in Laravel anwenden kannst.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/laravel-logging\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2022\/08\/laravel-logging-1.png","width":1460,"height":730,"caption":"Laravel Logging: Alles, was du wissen musst"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-logging\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/de\/thema\/laravel\/"},{"@type":"ListItem","position":3,"name":"Laravel Logging: Alles, was du wissen musst"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2","name":"Solomon Eseme","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","caption":"Solomon Eseme"},"description":"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me","sameAs":["https:\/\/masteringbackend.com","https:\/\/linkedin.com\/in\/solomoneseme","https:\/\/x.com\/kaperskyguru"],"url":"https:\/\/kinsta.com\/de\/blog\/author\/solomoneseme\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/53715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=53715"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/53715\/revisions"}],"predecessor-version":[{"id":55225,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/53715\/revisions\/55225"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/en"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/jp"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/es"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/dk"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/translations\/se"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/53715\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/53876"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=53715"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=53715"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=53715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}