{"id":138,"date":"2024-01-07T21:21:35","date_gmt":"2024-01-07T20:21:35","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=138"},"modified":"2024-01-08T21:27:34","modified_gmt":"2024-01-08T20:27:34","slug":"logging-in-spring-boot","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=138","title":{"rendered":"Logging in Spring Boot"},"content":{"rendered":"\n<p>Logging ist ein entscheidender Aspekt der Softwareentwicklung und wird oft vernachl\u00e4ssigt, bis Probleme in Produktionsumgebungen auftreten. Spring Boot, ein beliebtes Framework zur Entwicklung von Java-Anwendungen, bietet von Haus aus robuste Logging-Funktionen. In diesem Artikel werden wir das Logging in Spring Boot erkunden und die Grundlagen, Konfiguration, g\u00e4ngige Bibliotheken und bew\u00e4hrte Praktiken behandeln.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warum Logging wichtig ist<\/h2>\n\n\n\n<p>Effektives Logging ist aus mehreren Gr\u00fcnden wichtig:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Fehlersuche<\/strong>: Logging hilft Entwicklern dabei, Probleme zu identifizieren und zu beheben, indem es Einblicke in das Verhalten der Anwendung zur Laufzeit liefert.<\/li>\n\n\n\n<li><strong>\u00dcberwachung<\/strong>: Logs k\u00f6nnen verwendet werden, um die Gesundheit und Leistung der Anwendung in Produktionsumgebungen zu \u00fcberwachen.<\/li>\n\n\n\n<li><strong>Auditierung<\/strong>: Logging ist wichtig, um Benutzeraktivit\u00e4ten zu verfolgen und eine Audit-Trail aufrechtzuerhalten.<\/li>\n\n\n\n<li><strong>Sicherheit<\/strong>: Es hilft dabei, Sicherheitsverletzungen und unbefugten Zugriff zu identifizieren.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Logging in Spring Boot<\/h2>\n\n\n\n<p>Spring Boot verwendet die <strong>Commons Logging API<\/strong>, die eine flexible und benutzerfreundliche Logging-Abstraktion bietet. Im Hintergrund integriert sie verschiedene Logging-Frameworks wie Logback, Log4j2 und Java Util Logging (JUL). Das bedeutet, dass Sie das Logging-Framework ausw\u00e4hlen k\u00f6nnen, das Ihren Anforderungen am besten entspricht, oder bei der Standardeinstellung bleiben k\u00f6nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Standard-Logging-Konfiguration<\/h3>\n\n\n\n<p>Spring Boot stellt eine sinnvolle Standard-Logging-Konfiguration bereit, um Ihnen einen schnellen Einstieg zu erm\u00f6glichen. Standardm\u00e4\u00dfig verwendet es <strong>Logback<\/strong> als Logging-Framework. Die Standardkonfiguration finden Sie im Verzeichnis <code>src\/main\/resources<\/code> Ihrer Spring-Boot-Anwendung unter dem Namen <code>logback-spring.xml<\/code>.<\/p>\n\n\n\n<p>Hier ist ein einfaches Beispiel f\u00fcr eine Standard-<code>logback-spring.xml<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">configuration<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">include<\/span> <span class=\"hljs-attr\">resource<\/span>=<span class=\"hljs-string\">\"org\/springframework\/boot\/logging\/logback\/defaults.xml\"<\/span> \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">property<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"LOG_FILE\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"logs\/myapp.log\"<\/span> \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">include<\/span> <span class=\"hljs-attr\">resource<\/span>=<span class=\"hljs-string\">\"org\/springframework\/boot\/logging\/logback\/console-appender.xml\"<\/span> \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">root<\/span> <span class=\"hljs-attr\">level<\/span>=<span class=\"hljs-string\">\"INFO\"<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">appender-ref<\/span> <span class=\"hljs-attr\">ref<\/span>=<span class=\"hljs-string\">\"CONSOLE\"<\/span> \/&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">appender-ref<\/span> <span class=\"hljs-attr\">ref<\/span>=<span class=\"hljs-string\">\"FILE\"<\/span> \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">root<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">configuration<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In dieser Konfiguration werden Logs sowohl in die Konsole als auch in eine Datei mit dem Namen <code>myapp.log<\/code> geschrieben.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Logging-Ebenen<\/h3>\n\n\n\n<p>Das Logging in Spring Boot folgt einer Hierarchie von <strong>Logging-Ebenen<\/strong>, die die Schwere einer Lognachricht anzeigen. Die gebr\u00e4uchlichen Logging-Ebenen sind (in aufsteigender Reihenfolge der Schwere):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TRACE<\/strong>: Die detailliertesten Informationen, die in der Regel f\u00fcr die Fehlersuche verwendet werden.<\/li>\n\n\n\n<li><strong>DEBUG<\/strong>: Detaillierte Informationen, n\u00fctzlich zur Diagnose von Problemen.<\/li>\n\n\n\n<li><strong>INFO<\/strong>: Informationelle Nachrichten, die best\u00e4tigen, dass alles wie erwartet funktioniert.<\/li>\n\n\n\n<li><strong>WARN<\/strong>: Weist auf potenzielle Probleme hin, die Aufmerksamkeit erfordern k\u00f6nnen.<\/li>\n\n\n\n<li><strong>ERROR<\/strong>: Deutet auf ernsthafte Probleme hin, die sofortige Aufmerksamkeit erfordern.<\/li>\n\n\n\n<li><strong>FATAL<\/strong>: Die schwerwiegendste Ebene, die auf einen kritischen Fehler hinweist, der zum Herunterfahren der Anwendung f\u00fchren kann.<\/li>\n<\/ul>\n\n\n\n<p>Sie k\u00f6nnen die Logging-Ebene f\u00fcr verschiedene Teile Ihrer Anwendung konfigurieren, um die Detailtiefe in Ihren Logs zu steuern.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Logging in Spring Boot-Anwendungen<\/h3>\n\n\n\n<p>Spring Boot bietet verschiedene M\u00f6glichkeiten, um das Logging in Ihrer Anwendung durchzuf\u00fchren:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Verwenden des <code>Logger<\/code>-Interfaces von Spring<\/h4>\n\n\n\n<p>Sie k\u00f6nnen das <code>Logger<\/code>-Interface aus dem Paket <code>org.slf4j<\/code> verwenden, um in Ihren Klassen zu loggen. Hier ist ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.slf4j.Logger;\n<span class=\"hljs-keyword\">import<\/span> org.slf4j.LoggerFactory;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MeinService<\/span> <\/span>{\n    private <span class=\"hljs-keyword\">static<\/span> final Logger logger = LoggerFactory.getLogger(MeinService.class);\n\n    public <span class=\"hljs-keyword\">void<\/span> etwasTun() {\n        logger.debug(<span class=\"hljs-string\">\"Mache etwas...\"<\/span>);\n        <span class=\"hljs-comment\">\/\/ Ihr Code hier<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">2. Verwenden der <code>@Slf4j<\/code>-Annotation von Spring<\/h4>\n\n\n\n<p>Sie k\u00f6nnen das Logging in Ihren Klassen mit der <code>@Slf4j<\/code>-Annotation vereinfachen, die automatisch ein <code>Logger<\/code>-Feld f\u00fcr Sie generiert:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> lombok.extern.slf4j.Slf4j;\n\n@Slf4j\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MeinService<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">void<\/span> etwasTun() {\n        log.debug(<span class=\"hljs-string\">\"Mache etwas...\"<\/span>);\n        <span class=\"hljs-comment\">\/\/ Ihr Code hier<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">3. Logging in Spring Beans<\/h4>\n\n\n\n<p>Sie k\u00f6nnen die Spring-<code>@Log<\/code>-Annotation verwenden, um das Logging f\u00fcr Spring-Beans zu aktivieren. F\u00fcgen Sie die <code>@Log<\/code>-Annotation Ihrer Bean-Klasse hinzu, um das Logging f\u00fcr alle Methoden dieser Klasse zu aktivieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.springframework.stereotype.Service;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.boot.logging.Log;\n<span class=\"hljs-keyword\">import<\/span> lombok.extern.slf4j.Slf4j;\n\n@Service\n@Log\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MeinService<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">void<\/span> etwasTun() {\n        <span class=\"hljs-comment\">\/\/ Das Logging ist automatisch f\u00fcr diese Methode aktiviert<\/span>\n        <span class=\"hljs-comment\">\/\/ Ihr Code hier<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Anpassen der Logging-Konfiguration<\/h3>\n\n\n\n<p>Obwohl Spring Boot sinnvolle Standards bereitstellt, m\u00fcssen Sie m\u00f6glicherweise die Logging-Konfiguration an Ihre speziellen Anforderungen anpassen. Dies k\u00f6nnen Sie durch \u00c4ndern der Datei <code>logback-spring.xml<\/code> oder Verwenden von Eigenschaften in den Dateien <code>application.properties<\/code> oder <code>application.yml<\/code> erreichen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Verwenden von <code>application.properties<\/code><\/h4>\n\n\n\n<p>Sie k\u00f6nnen Logging-Eigenschaften in der Datei <code>application.properties<\/code> konfigurieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Setzen der Log-Ebene f\u00fcr den Root-Logger<\/span>\nlogging.level.root=INFO\n\n<span class=\"hljs-comment\"># Konfigurieren des Log-Dateinamens und -speicherorts<\/span>\nlogging.file=myapp.log\n\n<span class=\"hljs-comment\"># Konfigurieren des Log-Musters<\/span>\nlogging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %<span class=\"hljs-number\">-5<\/span>level %logger{<span class=\"hljs-number\">36<\/span>} - %msg%n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Verwenden von <code>application.yml<\/code><\/h4>\n\n\n\n<p>Alternativ k\u00f6nnen Sie die Datei <code>application.yml<\/code> f\u00fcr die Konfiguration verwenden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Setzen der Log-Ebene f\u00fcr den Root-Logger<\/span>\nlogging:\n  level:\n    root: INFO\n\n<span class=\"hljs-comment\"># Konfigurieren des Log-Dateinamens und -speicherorts<\/span>\nlogging:\n  file: myapp.log\n\n<span class=\"hljs-comment\"># Konfigurieren des<\/span>\n\n Log-Musters\nlogging:\n  pattern:\n    console: <span class=\"hljs-string\">\"%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Programmatische Konfiguration des Loggings<\/h4>\n\n\n\n<p>Wenn Sie eine dynamischere Kontrolle \u00fcber die Logging-Konfiguration ben\u00f6tigen, k\u00f6nnen Sie diese in Ihrer Spring-Boot-Anwendungsklasse programmatisch konfigurieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> org.springframework.boot.SpringApplication;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.boot.autoconfigure.SpringBootApplication;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.boot.logging.LogLevel;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.boot.logging.LoggingSystem;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.context.ApplicationContext;\n<span class=\"hljs-keyword\">import<\/span> org.springframework.context.annotation.Bean;\n\n@SpringBootApplication\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MeineAnwendung<\/span> <\/span>{\n\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        ApplicationContext context = SpringApplication.run(MeineAnwendung.class, args);\n\n        <span class=\"hljs-comment\">\/\/ Programmatische \u00c4nderung der Log-Ebene<\/span>\n        LoggingSystem.get(context.getClassLoader()).setLogLevel(<span class=\"hljs-string\">\"com.example.meineklasse\"<\/span>, LogLevel.DEBUG);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Logging an verschiedene Ausgaben<\/h3>\n\n\n\n<p>Spring Boot erm\u00f6glicht es Ihnen, Logs an verschiedene Ausgaben wie Konsole, Dateien oder entfernte Server zu leiten. Hier sind einige g\u00e4ngige Szenarien:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Konsole-Logging<\/h4>\n\n\n\n<p>Das Konsole-Logging ist in Spring Boot standardm\u00e4\u00dfig aktiviert. Sie k\u00f6nnen das Format des Konsolenlogs anpassen, indem Sie die Eigenschaft <code>logging.pattern.console<\/code> in Ihrer Konfigurationsdatei \u00e4ndern, wie bereits zuvor gezeigt.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Datei-Logging<\/h4>\n\n\n\n<p>Sie k\u00f6nnen Spring Boot so konfigurieren, dass Logs in Dateien geschrieben werden, indem Sie die Eigenschaft <code>logging.file<\/code> in Ihrer Konfigurationsdatei festlegen. Standardm\u00e4\u00dfig werden Logs im Arbeitsverzeichnis der Anwendung geschrieben, aber Sie k\u00f6nnen einen absoluten Pfad oder einen relativen Pfad angeben.<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">logging.file=myapp.log<\/code><\/span><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Rolling File Appenders<\/h4>\n\n\n\n<p>Um zu verhindern, dass Logdateien unbegrenzt wachsen, k\u00f6nnen Sie Rolling File Appenders konfigurieren. Die Standardkonfiguration von Spring Boot <code>logback-spring.xml<\/code> enth\u00e4lt einen <code>FILE<\/code>-Appender, der Logdateien bei Erreichen einer bestimmten Gr\u00f6\u00dfe oder eines bestimmten Datums neu startet. Sie k\u00f6nnen dieses Verhalten nach Bedarf anpassen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Remote Logging<\/h4>\n\n\n\n<p>In Produktionsumgebungen m\u00f6chten Sie m\u00f6glicherweise Logs an einen zentralen Logserver oder -dienst senden. Spring Boot unterst\u00fctzt das Remote Logging mit verschiedenen Appenders wie Logstash, Elasticsearch oder Splunk. Sie k\u00f6nnen diese Appender konfigurieren, um Logdaten an das gew\u00fcnschte entfernte Ziel zu senden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verwendung von Drittanbieter-Logging-Bibliotheken<\/h3>\n\n\n\n<p>Obwohl Spring Boot eine integrierte L\u00f6sung f\u00fcr das Logging bietet, k\u00f6nnen Sie auch Drittanbieter-Logging-Bibliotheken wie Log4j2 oder Logback integrieren, die erweiterte Funktionen und Anpassungsm\u00f6glichkeiten bieten.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Verwenden von Log4j2<\/h4>\n\n\n\n<p>Um Log4j2 in Ihrer Spring Boot-Anwendung zu verwenden, f\u00fcgen Sie die Log4j2-Abh\u00e4ngigkeiten zur <code>pom.xml<\/code> Ihres Projekts hinzu:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-log4j2<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Konfigurieren Sie dann Log4j2, indem Sie eine Datei <code>log4j2.xml<\/code> im Verzeichnis <code>src\/main\/resources<\/code> erstellen. Spring Boot erkennt und verwendet diese Konfiguration automatisch.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Verwenden von Logback<\/h4>\n\n\n\n<p>Um Logback in Ihrer Spring Boot-Anwendung zu verwenden, f\u00fcgen Sie die Logback-Abh\u00e4ngigkeiten zur <code>pom.xml<\/code> Ihres Projekts hinzu:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>spring-boot-starter<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>ch.qos.logback<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>logback-classic<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Anschlie\u00dfend k\u00f6nnen Sie die Konfigurationsdatei <code>logback-spring.xml<\/code> nach Bedarf anpassen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bew\u00e4hrte Praktiken f\u00fcr das Logging in Spring Boot<\/h3>\n\n\n\n<p>Um ein effektives Logging in Ihrer Spring Boot-Anwendung sicherzustellen, sollten Sie die folgenden bew\u00e4hrten Praktiken beachten:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Verwenden Sie geeignete Logging-Ebenen<\/strong>: Verwenden Sie die geeignete Logging-Ebene f\u00fcr jede Lognachricht. Vermeiden Sie \u00fcberm\u00e4\u00dfiges Logging auf niedrigeren Ebenen (z. B. DEBUG) in der Produktionsumgebung.<\/li>\n\n\n\n<li><strong>Loggen von Ausnahmestapeln<\/strong>: Beim Abfangen von Ausnahmen sollten Sie immer den Stapeltrace protokollieren. Dies erleichtert die Diagnose von Problemen erheblich.<\/li>\n\n\n\n<li><strong>Parameterisiertes Logging<\/strong>: Verwenden Sie parameterisiertes Logging, um den Aufwand f\u00fcr die Erstellung von Lognachrichten zu reduzieren, wenn die Logging-Ebene nicht aktiviert ist. Verwenden Sie z. B. <code>log.debug(\"Bearbeite Anfrage f\u00fcr Benutzer: {}\", benutzername)<\/code> anstelle der Zeichenkettenverkettung.<\/li>\n\n\n\n<li><strong>Loggen von aussagekr\u00e4ftigen Nachrichten<\/strong>: Stellen Sie sicher, dass Lognachrichten klar sind und ausreichend Kontext bieten, um das Verhalten der Anwendung zu verstehen.<\/li>\n\n\n\n<li><strong>Rotation und Archivierung von Logs<\/strong>: Konfigurieren Sie die Rotation und Archivierung von Logs, um zu verhindern, dass Logdateien zu gro\u00df werden.<\/li>\n\n\n\n<li><strong>Zentrales Logging<\/strong>: In verteilten Systemen sollten Sie zentrale Logging-L\u00f6sungen wie Elasticsearch, Logstash und Kibana (ELK-Stack) oder Splunk in Betracht ziehen, um eine bessere Verwaltung von Logs zu erm\u00f6glichen.<\/li>\n\n\n\n<li><strong>Sicherheit und sensible Informationen<\/strong>: Seien Sie vorsichtig beim Protokollieren sensibler Informationen wie Passw\u00f6rter oder API-Schl\u00fcssel. Verwenden Sie immer Logmaskierung oder Verschl\u00fcsselungstechniken, um sensible Daten zu sch\u00fctzen.<\/li>\n\n\n\n<li><strong>\u00dcberwachung und Benachrichtigung<\/strong>: Richten Sie die \u00dcberwachung und Benachrichtigung von Logs ein, um \u00fcber kritische Probleme sofort informiert zu werden, wenn sie in der Produktion auftreten.<\/li>\n\n\n\n<li><strong>Testen der Logging-Konfiguration<\/strong>: \u00dcberpr\u00fcfen Sie, ob Ihre Logging-Konfiguration in verschiedenen Umgebungen, einschlie\u00dflich produktions\u00e4hnlicher Konfigurationen, wie erwartet funktioniert.<\/li>\n\n\n\n<li><strong>Dokumentation<\/strong>: Dokumentieren Sie Ihre Logging-Praktiken und Konventionen, um eine konsistente Verwendung im Entwicklungsteam sicherzustellen.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Logging ist ein entscheidender Aspekt der Softwareentwicklung und wird oft vernachl\u00e4ssigt, bis Probleme in Produktionsumgebungen auftreten. Spring Boot, ein beliebtes Framework zur Entwicklung von Java-Anwendungen, bietet von Haus aus robuste Logging-Funktionen. In diesem Artikel werden wir das Logging in Spring Boot erkunden und die Grundlagen, Konfiguration, g\u00e4ngige Bibliotheken und bew\u00e4hrte Praktiken behandeln. Warum Logging wichtig [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-138","post","type-post","status-publish","format-standard","hentry","category-spring"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=138"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/138\/revisions"}],"predecessor-version":[{"id":139,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/138\/revisions\/139"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}