codestory

Verwenden Sie Logging im Spring Boot

  1. Das Ziel der Unterricht
  2. Erstellen Sie das Projekt Spring Boot
  3. Logging Level
  4. Logging File
  5. Logging Pattern

1. Das Ziel der Unterricht

Einfach verstanden, "Logging" ist "die Aufnahme (recording)" der Problems während der Operation der Applikation. Die Problems hier sind die Fehler, die Warnung, und die anderen Informationen. Diese Informationen kann in den Bildschirm Console angezeigt werden oder in die File aufnehmen.
Wenn Sie die Applikation Spring Boot direkt auf Eclipse laufen, können Sie die Information aufs Fenster Console sehen. Diese Information zeigen Sie den Zustand der Applikation, der Fehler währen der Operation der Applikation. Das ist Logging!.
Es gibt viele verschiedenen Bibliotheke Logging wie Logback, Log4j2, JUL,.. Spring Boot kann mit dieser Bibliotheke arbeiten. Nach Default hat Spring Boot automatisch konfiguriert und benutzte die Bibliothek Logback für sein logging , und Sie brauchen keine Konfiguration mehr, außer wenn Sie einige Arguments anpassen möchten. Die Anpassungen hier kann den Name der File bestimmen um die Information, die Vorlagen (pattern), ... schreiben.
In diesem Artikel werden wir die Operationsgrundsätze von Logback in der Applikation Spring Boot diskutieren und studieren den Anpassungsweg für Logback.
Die Properties können angepasst:
logging.config
logging.exception-conversion-word
logging.file
logging.level.*
logging.path
logging.pattern.console
logging.pattern.file
logging.pattern.level
logging.register-shutdown-hook

2. Erstellen Sie das Projekt Spring Boot

Auf Eclipse erstellen Sie das Projekt Spring Boot.
Um Logging zu benutzen, brauchen Sie ein der folgenden "Starter" verwenden
  • spring-boot-starter-logging
  • spring-boot-starter-web
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.o7planning</groupId>
    <artifactId>SpringBootDefaultLogging</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SpringBootDefaultLogging</name>
    <description>Spring Boot +Default Logging</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
MainController.java
package org.o7planning.sblogging.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Controller
public class MainController {

    private static final Logger LOGGER = LoggerFactory.getLogger(MainController.class);

    @ResponseBody
    @RequestMapping(path = "/")
    public String home() {

        LOGGER.trace("This is TRACE");
        LOGGER.debug("This is DEBUG");
        LOGGER.info("This is INFO");
        LOGGER.warn("This is WARN");
        LOGGER.error("This is ERROR");

        return "Hi, show loggings in the console or file!";
    }
    
}
Laufen Sie Ihre Applikation direkt auf Spring Boot laufen, danach greifen Sie auf die folgende Link zu:
Auf das Fenster Console von Eclipse können Sie die Information von Logs wie folgend sehen:
2018-01-14 13:21:57.593  INFO 7980 --- [nio-8080-exec-6] o.o.sblogging.controller.MainController  : This is INFO
2018-01-14 13:21:57.593  WARN 7980 --- [nio-8080-exec-6] o.o.sblogging.controller.MainController  : This is WARN
2018-01-14 13:21:57.593 ERROR 7980 --- [nio-8080-exec-6] o.o.sblogging.controller.MainController  : This is ERROR

3. Logging Level

Nach dem Schweregrad des Problem teilt Logback die Information zu 5 Niveau (Level). Die niedrigste Schweregrad ist TRACE, und die meiste ist ERROR. Achtung: Es gibt einige Bibliothek Logging teilt die Informationen, die aufgenommen werden brauchen, in 7 verschiedenen Niveau.
  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • OFF
Nach dem Default nimmt Spring Boot nur die Information mit dem Schweregrad von ab INFO auf.
# Default:

logging.level.root=INFO
Ändern Sie Logging Level in application.properties:
* application.properties *
logging.level.root=WARN

# ..
Laufen Sie Ihre Applikation wieder und sehen, dass die Information aufs Fenster Console geschrieben:
2018-01-14 17:45:50.341  WARN 8500 --- [nio-8080-exec-1] o.o.sblogging.controller.MainController  : This is WARN
2018-01-14 17:45:50.342 ERROR 8500 --- [nio-8080-exec-1] o.o.sblogging.controller.MainController  : This is ERROR

4. Logging File

Die Default logging Information wird in dem Bildschirm Console geschrieben allerdings können Sie konfigurieren damit sie in die File geschrieben werden.
* application.properties *
logging.file=logs/mylog.log
Laufen Sie Ihre Applikation in Eclipse wieder, danach besuchen Sie die folgende Link:
Dann erfrischen Sie das Projekt. Sie können sehen, dass die File logging erstellt wird.

5. Logging Pattern

Die Log Aufnahmen werden nach einer Vorlage geschrieben. Unten ist das ein Default-Vorlage (pattern) :
Und Sie können "Logging pattern" durch die Anpassung der folgenden Properties ändern:
  • logging.pattern.console
  • logging.pattern.file
# Pattern:

logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n

# Output:

2018-Jan-17 01:58:49.958 WARN  [http-nio-8080-exec-1] o.o.s.c.MainController - This is WARN
2018-Jan-17 01:58:49.960 ERROR [http-nio-8080-exec-1] o.o.s.c.MainController - This is ERROR
# Pattern:

logging.pattern.console= %d{dd/MM/yyyy HH:mm:ss.SSS} %-5level [%thread] %logger{115} - %msg%n

# Output:

17/01/2018 02:15:15.052 WARN  [http-nio-8080-exec-1] org.o7planning.sblogging.controller.MainController - This is WARN
17/01/2018 02:15:15.054 ERROR [http-nio-8080-exec-1] org.o7planning.sblogging.controller.MainController - This is ERROR
# Pattern:

logging.pattern.console=%d{yy-MMMM-dd HH:mm:ss:SSS} %5p %t %c{2}:%L - %m%n

# Output:

18-January-17 02:21:20:317  WARN http-nio-8080-exec-1 o.o.s.c.MainController:22 - This is WARN
18-January-17 02:21:20:320 ERROR http-nio-8080-exec-1 o.o.s.c.MainController:23 - This is ERROR

Anleitungen Spring Boot

Show More