Was ist eine Rune in Go? Vergleich der Ansätze und praktische Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Logging in Kotlin-Anwendungen: Best Practices für Einsteiger

\n\n

Beim Logging geht es nicht nur darum, Nachrichten in eine Datei zu schreiben. Es ist ein System, das einem Entwickler hilft, in Echtzeit zu verstehen, was in der Anwendung passiert, schnell Fehler zu finden und das Benutzerverhalten zu analysieren. In diesem Artikel werden wir uns ansehen, wie man Logging in Kotlin-Anwendungen richtig organisiert, welche Bibliotheken man verwendet und welche Fehler man vermeiden sollte.

\n\n

Warum ist Logging notwendig?

\n

Logging löst mehrere wichtige Aufgaben:

\n
    \n
  • Debugging: Ermöglicht es, die Aufrufsequenz und Variablenwerte ohne Verwendung eines Debuggers zu sehen.
  • \n
  • Monitoring: Hilft, den Zustand der Anwendung in einer Produktionsumgebung zu verfolgen.
  • \n
  • Auditing: Zeichnet Benutzeraktionen und Systemereignisse auf.
  • \n
  • Performance: Logs können helfen, Engpässe und Verzögerungen zu identifizieren.
  • \n
\n\n

Beliebte Bibliotheken für Logging in Kotlin

\n

Im Kotlin- und JVM-Ökosystem gibt es mehrere bewährte Lösungen. Schauen wir uns die wichtigsten an:

\n
    \n
  • SLF4J (Simple Logging Facade for Java) — eine Fassade, die selbst kein Logging implementiert, aber eine einheitliche API für verschiedene Implementierungen (Logback, Log4j2 usw.) bereitstellt.
  • \n
  • Logback — die beliebteste SLF4J-Implementierung. Schnell, flexibel, mit Unterstützung für rotierende Dateien.
  • \n
  • Log4j 2 — eine leistungsstarke Bibliothek mit Unterstützung für asynchrones Logging und Filterung.
  • \n
  • Kotlin Logging — ein praktischer Wrapper über SLF4J, der Inline-Funktionen verwendet, um den Overhead zu minimieren.
  • \n
\n\n

Konfiguration von Logback in einem Kotlin-Projekt

\n

Schauen wir uns eine Schritt-für-Schritt-Konfiguration von Logback an, der beliebtesten Lösung für Kotlin/JVM-Anwendungen.

\n\n

Schritt 1. Hinzufügen von Abhängigkeiten

\n

Fügen Sie in der Datei build.gradle.kts hinzu:

\n
dependencies {\n    implementation("ch.qos.logback:logback-classic:1.4.14")\n    implementation("io.github.microutils:kotlin-logging-jvm:3.0.5")\n}
\n\n

Schritt 2. Erstellen einer Konfigurationsdatei

\n

Erstellen Sie eine Datei src/main/resources/logback.xml:

\n
<configuration>\n    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">\n        <file>logs/app.log</file>\n        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\n            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>\n            <maxHistory>30</maxHistory>\n        </rollingPolicy>\n        <encoder>\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <root level="INFO">\n        <appender-ref ref="CONSOLE"/>\n        <appender-ref ref="FILE"/>\n    </root>\n</configuration>
\n

Diese Konfiguration gibt Logs auf der Konsole und in einer Datei mit täglicher Rotation aus (Logs werden 30 Tage lang aufbewahrt).

\n\n

Schritt 3. Verwendung im Code

\n

Verwenden wir die kotlin-logging-Bibliothek:

\n
import mu.KotlinLogging\n\nprivate val logger = KotlinLogging.logger {}\n\nfun main() {\n    logger.info("Anwendung gestartet")\n    logger.debug { "Variablenwert x = $x" }\n    try {\n        // etwas Code\n    } catch (e: Exception) {\n        logger.error(e) { "Fehler während der Ausführung des Vorgangs" }\n    }\n}
\n\n

Logging-Stufen: Wann verwendet man was

\n

Die Wahl der richtigen Stufe ist die Grundlage für lesbare Logs. Logback hat die folgenden Stufen

Blogs

Buchempfehlungen