Sous Spring Boot, j'ai essayé d'utiliser LOG4J pour logstash et ajouter le fichier log4j.properties dans le répertoire SRC / Main / Resources pour personnaliser le fichier journal de sortie, mais il a échoué. Configuration du chemin de journalisation dans application.yml L'impression du journal a été imprimée avec succès, mais la journalisation du fichier journal n'a pas réussi à être déboguée avec succès. J'ai vérifié les informations en ligne et j'ai dit que Spring Boot utilise la connexion pour enregistrer les journaux par défaut. Après de nombreuses tentatives, Log4j a échoué, il a donc changé pour enregistrer pour enregistrer, et le test final a été réussi.
1. Avez-vous des questions sur le chemin du fichier journal de démarrage de Spring?
Les propriétés logging.path et logging.file sont configurées en même temps, comme suit:
journalisation: chemin: / var / fichier journal: test.log
Seul le fichier test.log sera généré sous le chemin de la racine du projet, et le fichier journal ne sera pas généré sous le chemin spécifié (le chemin de journal attendu est: logging.path + logging.file).
Raison: Dans Spring Boot, il vous suffit de configurer l'une des deux propriétés: logging.path et logging.file. Si vous êtes configuré en même temps, utilisez l'attribut logging.file.
Lorsque la propriété Loggin.Path est configurée, le fichier Spring.log sera généré dans ce chemin, c'est-à-dire que le nom du fichier de journal par défaut Spring.log est utilisé pour le moment.
Lorsque la propriété Loggin.File est configurée, un fichier journal avec le nom spécifié est généré sous le chemin spécifié. La valeur par défaut est le chemin relatif du projet, et vous pouvez spécifier un chemin absolu pour logging.file.
enregistrement:
path: / var / logs # générer le fichier spring.log dans / var / logs diveroire fichier: /var/logs/test.log # générer un fichier test.log dans / var / logs répertoire
2. Raisons de la journalisation pour remplacer Log4j:
Voici des extraits d'Internet:
Logback et Log4j sont très similaires. Si vous connaissez Log4j, la journalisation sera très facile à y habituer. Voici quelques avantages de la connexion sur Log4J:
1. Le noyau qui implémente le journal de bord plus rapide a été réécrit, et les performances sont améliorées de plus de 10 fois sur certains chemins d'exécution clés. De plus, la connexion améliore non seulement les performances, mais charge également la mémoire initiale.
2. Logback de test très suffisant après plusieurs années, d'innombrables heures de test. Les tests de Logback sont complètement différents. Dans le point de vue de l'auteur, il est tout simplement important de choisir la logback au lieu de Log4j.
3. Logback-classic implémente SLF4J très naturellement. Logback-classic implémente SLF4J. Lorsque vous utilisez SLF4J, vous ne pouvez même pas ressentir le logback-classic. Et parce que Logback-Classic implémente SLF4J très naturellement, le passage à Log4J ou à d'autres est très facile. Il est normal de le fournir dans un autre package de pot, et il n'est pas nécessaire de toucher le code implémenté via SLF4JAPI.
4. Documents très suffisants, le site officiel compte plus de 200 pages de documents.
5. Recharger automatiquement le fichier de configuration. Lorsque le fichier de configuration est modifié, le logback-classic peut automatiquement recharger le fichier de configuration. Le processus de numérisation est rapide et sûr, et il ne nécessite pas un autre thread de balayage. Cette technologie garantit pleinement que l'application peut fonctionner heureusement dans l'environnement JEE.
6. Lilith, Lilith est l'observateur des événements de journal, similaires à la tronçonneuse log4j. Lilith peut également traiter de grandes quantités de données de journal.
7. Mode de mise en garde et récupération très amicale. En mode prudence, plusieurs instances FileAppender s'exécutent sous plusieurs JVM et peuvent écrire en toute sécurité le même fichier journal. RollingFileAPpender aura certaines limites. FileAPpender de Logback et ses sous-classes, y compris RollingFileAPpender, sont en mesure de se remettre des exceptions d'E / S très amicales.
8. Les fichiers de configuration peuvent gérer différentes situations. Les développeurs doivent souvent juger que les différents fichiers de configuration de la connexion sont dans différents environnements (développement, test, production). Et ces fichiers de configuration ne sont que légèrement différents et peuvent être implémentés, et pour qu'un fichier de configuration puisse s'adapter à plusieurs environnements.
9. Les filtres, parfois, doivent diagnostiquer un problème et le enregistrer. Dans LOG4J, le niveau de journal ne peut être réduit que, mais cela produira un grand nombre de journaux et affectera les performances de l'application. En enregistrement, vous pouvez continuer à maintenir ce niveau de journal et à éliminer certaines situations spéciales. Par exemple, l'utilisateur qui est connecté, son journal sera frappé au niveau de débogage et les autres utilisateurs peuvent continuer à être touchés au niveau de la guerre. Pour implémenter cette fonction, seules 4 lignes de configuration XML sont nécessaires. Vous pouvez vous référer à MDCFilter.
10. SiftingAPPender (un appender très multifonctionnel) Il peut être utilisé pour diviser les fichiers journaux en fonction de tous les paramètres en cours d'exécution. Par exemple, SiftingAPPeNder peut distinguer les événements de journal du suivi de la session de l'utilisateur, puis chaque utilisateur aura un fichier journal.
11. Compressez automatiquement le journal imprimé. Lorsqu'un nouveau fichier est généré, le fichier journal qui a été imprimé sera automatiquement compressé. La compression est un processus asynchrone, donc même pour les grands fichiers journaux, les applications ne seront pas affectées dans le processus de compression.
12. L'arbre de pile a une version de package. Logback apportera les données du package lors de sa publication.
13. Supprimez automatiquement les anciens fichiers journaux. En définissant la propriété Maxhistory de la base de la Fonctionnement temporel ou de la SizeAndTimeBasedFNATP, vous pouvez contrôler le nombre maximum de fichiers journaux générés. Si Maxhistory 12 est défini, les fichiers journaux qui ont dépassé 12 mois seront automatiquement supprimés.
En bref, la journalisation est meilleure que Log4J. Créons toutes nos applications sur la connexion!
3. Introduire la connexion dans le projet
Ajouter des dépendances de package, style maven:
<dependency> <proupId> org.springframework.boot </proupId> <Artifactid> printemps-boot-starter-ligging </ artifactid> </pependency> <dependency> <prouprid> net.logstash.logback </proupId> <Artifactid> Logstash-Logback-Encoder </ Artifactid> <Dursed> <Dursed> <GroupId> net.logstash.log4j </proupId> <Artifactid> jsoneVevent-Layout </ artifactid> <version> 1.7 </-version> </Dependency>
4. Ajouter Logback.xml
Ajoutez le fichier logback.xml dans le répertoire SRC / Main / Resources, et le système chargera automatiquement la configuration logback.xml.
logback.xml:
<? xml version = "1.0" Encoding = "utf-8"?> <configuration scan = "true" scanperiod = "60 seconds" debug = "false"> <include ressource = "org / springframework / boot / logging / logback value = "e: //test//logback.log" /> -> <propriété name = "log.path" value = "/ users / chang / dektop / chlogs / logback.log" /> <appender name = "Stash"> <estination> 192.168.220.83:9601 </ Destination> <Encoder /> </ appender> name = "Console"> <! - <filter> <velt> Erreur </Devel> </filter> -> <coder> <mattern>% D {HH: mm: ss.sss}% contextName [% thread]% -5level% logger {36} -% msg% n </mattern> </coder> </appenter> <! - <Fichier> $ {log.path} </ file> <rollingPolicy> <FileLenamepattern> Logback.% d {yyyy-mm-dd} .log </ filenamepattern> </ rollingpolicy> <coder> <atmatefred>% d {hh: mm: s.sss}% contextName [% thread % msg% n </ motif> </coder> </ appender> <root niveau = "info"> <appender-ref ref = "stash" /> <appender-ref ref = "console" /> <appender-ref ref = "file" /> </ root> <! - Logback est un package dans Java <Logger Name = "com.dudu.controller" classe <logger name = "com.dudu.controller.learnController" niveau = "warn" addition = "false"> <appender-ref ref = "Console" /> </ogrogger> -> </ configuration>5. Problème de version d'encodeur logstash-logback
Dans Spring-Boot, si vous utilisez Logstash-Logback-Encoder, vous devrez peut-être indiquer à Maven le numéro de version spécifique pour éviter les conflits de dépendance des packages. Par exemple, vous pouvez définir les dépendances de Logback-Core, Logback-Classic et Logback-Access comme ce qui suit:
<preperties> <ch.qos.logback.version> 1.2.3 </ch.qos.logback.version> </properties> <dedentencymanagement> <Dedencys> <Dendency> <proupId> ch.qos.logback </proupcid> <Artifactid> Logback-core </ artifactid> </ version> $ {ch.qos.logback.version. <dependency> <proupId> ch.qos.logback </rompuprid> <letifactId> logback-classic </letefactId> <in version> $ {ch.qos.logback.version} </-groupId> <pedigency> <proupId> ch.qos.logback </proupId> <ArtifActid> Logback-Acmess </ artifactId> <version> $ {ch.qos.logback.version} </ version> </dependency> </dependency> </Dependencymanagement>6. Construction du service Logstash
se référer à:
1.Logstash-logback-encodeur
Résumer
Ce qui précède est la méthode d'utilisation de la journalisation, de la logstash et du wapiti pour enregistrer les fichiers journaux dans Spring Boot qui vous est présenté. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!