So erhalten Sie Zugriff auf SpringBoot-Protokolldateien
SpringBoot-Protokolldatei
1. Was ist die Verwendung von Protokollen? Das Protokoll ist ein wichtiger Teil des Programms und lässt Sie die Konsole nicht öffnen, um das anzuzeigen log, dann finden Sie den Fehlerbericht. Der Grund?
Für uns besteht der Hauptzweck von Protokollen darin, Probleme zu beheben und zu lokalisieren. Neben der Erkennung und Lokalisierung von Problemen können wir durch Protokolle auch die folgenden Funktionen erreichen:
- Benutzeranmeldeprotokolle aufzeichnen, um die Analyse zu erleichtern, ob sich Benutzer normal anmelden oder Benutzer böswillig knacken
- Systembetriebsprotokolle aufzeichnen, um Daten zu erleichtern Wiederherstellung Zeichnen Sie die Ausführungszeit des Programms mit dem Positionierungsoperator auf
- , um dem Optimierungsprogramm die Bereitstellung von Datenunterstützung in der Zukunft zu erleichtern
- 2 So verwenden Sie Protokolle: Das Spring Boot-Projekt verfügt standardmäßig über eine Protokollausgabe Wenn es gestartet wird, wie unten gezeigt:
Spring Boot verfügt über ein integriertes Protokollierungsframework
Standardmäßig ist das Ausgabeprotokoll nicht definiert und Wird vom Entwickler gedruckt. Wie kann der Entwickler es im Programm „Protokoll drucken“ definieren?
Das Protokoll wird standardmäßig auf der Konsole gedruckt, aber das Konsolenprotokoll kann nicht dauerhaft gespeichert werden.
3. Benutzerdefinierter Protokolldruck
Implementierungsschritte für Entwickler zum Anpassen des Protokolldrucks:
Rufen Sie das Protokoll im Programm ab
-
Verwenden Sie die entsprechende Syntax des Protokollobjekts, um den zu druckenden Inhalt auszugeben
-
3.1 Erhalten Sie das Protokollobjekt im Programm
private static final Logger log = LoggerFactory.getLogger(UserController.class);
Nach dem Login kopierenDie Protokollfabrik muss den Typ jeder Klasse übergeben, damit wir die zugehörige Klasse des Protokolls kennen und das Problem bequemer und intuitiver lokalisieren können
Hinweis: Das Logger-Objekt gehört zum org.slf4j-Paket. Machen Sie nicht den falschen Fehler Geben Sie das Protokoll aus,
4. Protokollebene
4.1 Wozu dient die Protokollebene?
Die Protokollebene kann steuern, ob ein Programm Protokolle in verschiedenen Umgebungen drucken muss. In der Entwicklungsumgebung benötigen wir beispielsweise sehr detaillierte Informationen, während in der Produktionsumgebung nur wenige Informationen erforderlich sind Informationen werden ausgegeben, um Leistung und Sicherheit aufrechtzuerhalten. Protokolle. Diese Anforderungen können durch Protokollebenen erfüllt werden. Das bedeutet ein wenig, die unterste Ebene
Debug: Erforderlich Drucken von Schlüsselinformationen während des Debuggens
Info: Normale Druckinformationen (Standardprotokollebene)
Warnung: Warnung: Beeinträchtigt nicht die Verwendung, aber Probleme, die erforderlich sind Achtung
Fehler: Fehlerinformationen, Fehlerprotokollinformationen auf höherer Ebene
- fatal: Schwerwiegend, ein Ereignis, das dazu führt, dass das Programm die Ausführung aufgrund einer Code-Ausnahme beendet
- Die Reihenfolge der Protokollebenen:
- Je höher, desto weniger Informationen werden empfangen, wie eingestellt. Wenn Sie eine Warnung erhalten, können Sie nur die Warnung und die darüber liegenden Ebenen empfangen. Einstellungen für die Protokollebene Sehen Sie sich die Konfigurationsdatei an und beobachten Sie die von der Konsole ausgegebene Protokollstufe verwendet wird. Das heißt, die Priorität lokaler Protokolle ist höher als die Priorität globaler Protokolle
- 5. Die oben genannten Protokolle werden auf der Konsole ausgegeben. In der Produktionsumgebung müssen wir die Protokolle jedoch speichern dass wir nach dem Auftreten von Problemen zurückverfolgen können. Der Vorgang des Speicherns von Protokollen wird als Persistenz bezeichnet. Wenn Sie die Protokolle beibehalten möchten, müssen Sie lediglich das Speicherverzeichnis der Protokolle in der Konfigurationsdatei angeben oder die Protokollspeicherdatei angeben Name und Spring Boot schreiben die Konsolenprotokolle. Gehen Sie zum entsprechenden Verzeichnis oder zur entsprechenden Datei.
- Konfigurieren Sie den Speicherpfad der Protokolldatei: Der Speicherpfad, der Einstellungen für Escape-Zeichen enthält. Wir können diesen
@Controller @ResponseBody public class UserController { private static final Logger log = LoggerFactory.getLogger(UserController.class); @RequestMapping("/sayhi") public void sayHi() { log.trace("trace"); log.debug("debug"); log.info("info"); log.warn("warn"); log.error("error"); } }
Nach dem Login kopieren/ verwenden.
als Trennzeichen. - Wenn Sie unter Windows darauf bestehen, das Trennzeichen zu verwenden, müssen wir das Escape-Zeichen
verwenden, um es zu maskieren
配置日志文件的文件名:
logging: file: name: D:/rizhi/logger/spring.log
Nach dem Login kopieren6. 更简单的日志输出–lombok
每次使用LoggerFactory.getLogger很繁琐,且每个类都添加一遍,也很麻烦。这里的lombok是一种更好的日志输出方式
添加lombok框架支持
使用@slf4j注解输出日志
6.1 添加 lombok 依赖
首先要安装一个插件:
然后再pom.xml页面右键、
最后重新添加依赖就可以了
6.2 输出日志
使用@Slf4j注解,在程序中使用log对象即可输入日志并且只能使用log对象才能输出,这是lombok提供的对象名
6.3 lombok原理解释
lombok 能够打印⽇志的密码就在 target ⽬录⾥⾯,target 为项⽬最终执⾏的代码,查看 target ⽬录我们可以发现:
这里的@Slf4j注解变成了一个对象。
下面是java程序的运行原理:
6.4 lombok更多注解说明
基本注解
注解 作用 @Getter 自动添加get方法 @Setter 自动添加set方法 @ToString 自动添加toString方法 @EqualsAndHashCode 自动添加equals和hasCode方法 @NoArgsConstructor 自动添加无参构造方法 @AllArgsConstructor 自动添加全属性构造方法,顺序按照属性的定义顺序 @NonNull 属性不能为null @RequiredArgsConstructor 自动添加必须属性的构造方法,final + @NonNull的属性为需 组合注解:
注解 作用 @Data @Getter+@Setter+EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor 日志注解
注解 作用 @Slf4j 添加一个名为log的对象
Das obige ist der detaillierte Inhalt vonSo erhalten Sie Zugriff auf SpringBoot-Protokolldateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Einführung in Jasypt Jasypt ist eine Java-Bibliothek, die es einem Entwickler ermöglicht, seinem Projekt mit minimalem Aufwand grundlegende Verschlüsselungsfunktionen hinzuzufügen und kein tiefes Verständnis der Funktionsweise der Verschlüsselung erfordert. standardbasierte Verschlüsselungstechnologie. Passwörter, Text, Zahlen, Binärdateien verschlüsseln ... Geeignet für die Integration in Spring-basierte Anwendungen, offene API, zur Verwendung mit jedem JCE-Anbieter ... Fügen Sie die folgende Abhängigkeit hinzu: com.github.ulisesbocchiojasypt-spring-boot-starter2 Die Vorteile von Jasypt schützen unsere Systemsicherheit. Selbst wenn der Code durchgesickert ist, kann die Datenquelle garantiert werden.

Nutzungsszenario 1. Die Bestellung wurde erfolgreich aufgegeben, die Zahlung erfolgte jedoch nicht innerhalb von 30 Minuten. Die Zahlung ist abgelaufen und die Bestellung wurde automatisch storniert. 2. Die Bestellung wurde unterzeichnet und es wurde 7 Tage lang keine Bewertung durchgeführt. Wenn die Bestellung abläuft und nicht ausgewertet wird, wird die Bestellung standardmäßig positiv bewertet. Wenn der Händler die Bestellung innerhalb von 5 Minuten nicht erhält, wird die Bestellung abgebrochen Es wird eine SMS-Erinnerung gesendet ... Für Szenarien mit langen Verzögerungen und geringer Echtzeitleistung können wir die Aufgabenplanung verwenden, um eine regelmäßige Abfrageverarbeitung durchzuführen. Zum Beispiel: xxl-job Heute werden wir auswählen

1. Redis implementiert das Prinzip der verteilten Sperren und warum verteilte Sperren erforderlich sind. Bevor über verteilte Sperren gesprochen wird, muss erläutert werden, warum verteilte Sperren erforderlich sind. Das Gegenteil von verteilten Sperren sind eigenständige Sperren. Wenn wir Multithread-Programme schreiben, vermeiden wir Datenprobleme, die durch den gleichzeitigen Betrieb einer gemeinsam genutzten Variablen verursacht werden. Normalerweise verwenden wir eine Sperre, um die Richtigkeit der gemeinsam genutzten Variablen sicherzustellen Die gemeinsam genutzten Variablen liegen im gleichen Prozess. Wenn es mehrere Prozesse gibt, die gleichzeitig eine gemeinsam genutzte Ressource betreiben müssen, wie können sie sich dann gegenseitig ausschließen? Heutige Geschäftsanwendungen sind in der Regel Microservice-Architekturen, was auch bedeutet, dass eine Anwendung mehrere Prozesse bereitstellen muss. Wenn mehrere Prozesse dieselbe Datensatzzeile in MySQL ändern müssen, ist eine Verteilung erforderlich, um fehlerhafte Daten zu vermeiden wird zu diesem Zeitpunkt eingeführt. Der Stil ist gesperrt. Punkte erreichen wollen

Springboot liest die Datei, kann aber nach dem Packen in ein JAR-Paket nicht auf die neueste Entwicklung zugreifen. Es gibt eine Situation, in der Springboot die Datei nach dem Packen in ein JAR-Paket nicht lesen kann ist ungültig und kann nur über den Stream gelesen werden. Die Datei befindet sich unter resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

Wenn Springboot + Mybatis-plus keine SQL-Anweisungen zum Hinzufügen mehrerer Tabellen verwendet, werden die Probleme, auf die ich gestoßen bin, durch die Simulation des Denkens in der Testumgebung zerlegt: Erstellen Sie ein BrandDTO-Objekt mit Parametern, um die Übergabe von Parametern an den Hintergrund zu simulieren dass es äußerst schwierig ist, Multi-Table-Operationen in Mybatis-plus durchzuführen. Wenn Sie keine Tools wie Mybatis-plus-join verwenden, können Sie nur die entsprechende Mapper.xml-Datei konfigurieren und die stinkende und lange ResultMap konfigurieren Schreiben Sie die entsprechende SQL-Anweisung. Obwohl diese Methode umständlich erscheint, ist sie äußerst flexibel und ermöglicht es uns

1. Passen Sie den RedisTemplate1.1-Standard-Serialisierungsmechanismus an. Die API-basierte Redis-Cache-Implementierung verwendet die RedisTemplate-Vorlage für Daten-Caching-Vorgänge. Öffnen Sie hier die RedisTemplate-Klasse und zeigen Sie die Quellcodeinformationen der Klasse publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations an. Schlüssel deklarieren, verschiedene Serialisierungsmethoden des Werts, der Anfangswert ist leer @NullableprivateRedisSe

In Projekten werden häufig einige Konfigurationsinformationen benötigt. Diese Informationen können in der Testumgebung und in der Produktionsumgebung unterschiedliche Konfigurationen haben und müssen möglicherweise später basierend auf den tatsächlichen Geschäftsbedingungen geändert werden. Wir können diese Konfigurationen nicht fest im Code codieren. Am besten schreiben Sie sie in die Konfigurationsdatei. Sie können diese Informationen beispielsweise in die Datei application.yml schreiben. Wie erhält oder verwendet man diese Adresse im Code? Es gibt 2 Methoden. Methode 1: Wir können den Wert, der dem Schlüssel in der Konfigurationsdatei (application.yml) entspricht, über den mit @Value versehenen Wert erhalten. Diese Methode eignet sich für Situationen, in denen es relativ wenige Mikrodienste gibt: Tatsächlich Projekte, wenn das Geschäft kompliziert ist, Logik
