spring boot, logback et l'exploitation forestière.config de la propriété
Je suis en œuvre de l'ouverture d'un printemps de démarrage du projet avec logback de la bibliothèque. Je veux charger la configuration de la journalisation des fichiers en fonction de mon ressort des profils (propriété du printemps.poles fichiers.active'). J'ai 3 fichiers : logback-dev.xml, logback-inte.xml et logback-prod.xml. Je suis à l'aide de printemps de démarrage de la version 1.2.2.La LIBÉRATION.
Comme vous pouvez le lire dans le printemps de démarrage de la documentation (ici). Il dit:
Les différents systèmes d'enregistrement peut être activé par l', y compris les bibliothèques sur le chemin de la classe, et plus personnalisé en offrant une configuration adaptée de fichier dans la racine du classpath, ou dans un emplacement spécifié par le Printemps de l'Environnement de la propriété journalisation.config. (À noter toutefois que, depuis la journalisation est initialisée avant l'ApplicationContext est créé, il n'est pas possible de contrôler la journalisation de @PropertySources au Printemps @fichiers de Configuration. Les propriétés du système conventionnel et au Printemps de Démarrage externe les fichiers de configuration fonctionnent tout aussi bien.)
J'ai donc essayé de mettre des forêts.config' bien dans mon application.fichier de propriétés:
logging.config=classpath:/logback-${spring.profiles.active}.xml
Mais quand je lance mon application, mon logback-{profil}.xml n'est pas chargé...
Je pense que la journalisation est un problème commun à tous les projets à l'aide de printemps de démarrage ont rencontrés. Je veux savoir si je suis dans la bonne direction ou pas car j'ai d'autres solutions qui travaille trop, mais je les trouve pas très élégant (sous réserve de l'analyse avec Janino dans logback.xml fichier ou de la propriété de ligne de commande).
Vérifier mon montage sur Mars 3 'de 2016
suivez ce lien: stackoverflow.com/a/49568780/4369820
Trouver votre réponse - stackoverflow.com/a/54477155/5756557
OriginalL'auteur LG_ | 2015-04-03
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution et j'ai compris pourquoi le printemps n'est pas prendre soin au sujet de mon " la journalisation.config' bien défini dans l'application.fichier de propriétés.
Solution et une explication :
Lorsque vous initialisez la journalisation, le printemps de démarrage ne regarde dans le classpath ou des environnements variables ( voir http://docs.spring.io/spring-boot/docs/0.5.0.M3/api/org/springframework/boot/context/initializer/LoggingApplicationContextInitializer.html).
La meilleure solution que j'ai trouvé est d'compris un parent logback.xml fichier inclus le droit de journalisation fichier de configuration en fonction de mon ressort de profil.
logback.xml :
logback-[profil].xml (dans ce cas, logback-dev.xml) :
Remarque :
le " printemps.les profils.active " doit être réglé dans les arguments de ligne de commande lors du démarrage de l'application.
E. G pour les propriétés JVM :
-Dspring.profiles.active=dev
Ref docs :
Modifier (plusieurs profils actifs) :
Afin d'éviter de multiples fichiers, on peut utiliser un traitement conditionnel qui nécessite Janino dépendance (le programme d'installation ici), voir conditionnel documentation.
Avec cette méthode, on peut aussi vérifier l'activation de plusieurs profils en même temps. E. G (je n'ai pas tester cette solution, mettre un commentaire si ça ne marche pas):
Voir javasenior réponse pour un autre exemple de traitement conditionnel.
Oui, c'est vrai. Dans ce cas, je voudrais utiliser janino de la bibliothèque.
toutes les mises à jour sur une solution élégante pour quand vous avez plusieurs profils actifs en même temps?
La caisse de la springProfile extension venir au Printemps de Démarrage 1.3.0
vous pouvez également définir le profil dans l'application.les propriétés par défaut dev, comme le printemps.les profils.active=${dev:dev}. Si vous ne passez pas -Dspring.les profils.active par défaut sera dev
OriginalL'auteur LG_
Une autre approche qui pourrait gérer plusieurs profils est de créer un fichier de propriétés pour chaque environnement.
application-prod.propriétés
application-dev.propriétés
application locale.propriétés
ÊTRE CONSCIENT
Si vous n'êtes pas prudent, vous pourriez finir l'enregistrement dans des endroits inattendus
OriginalL'auteur Zergleb
Au lieu d'ajouter séparé logback xmls, pour chaque profil, ou d'avoir la condition SI , je vous suggère le suivant (Si vous avez moins de différence dans les xmls') pour faciliter le traitement conditionnel :
il nous reste à préciser le printemps.les profils.active=mode ?
OriginalL'auteur nav3916872
Traitement conditionnel avec logback sera une solution sans beaucoup de logback fichiers. Voici un lien et un échantillon logback configuration avec le printemps des profils.
Aussi, vous pourriez avoir à ajouter à votre pom.xml
OriginalL'auteur javasenior
Printemps a l'appui de la prochaine balise
<springProperty/>
à l'intérieur de Logback fichier XML, cette balise décrit ici . Cela signifie que vous pouvez facilement ajouter une variable à partir du Printemps de fichier de propriété, même cette valeur de la variable est résolu à partir de l'environnement/système variable d'ici le Printemps.OriginalL'auteur Andriy Rymar
Vous pouvez spécifiques différentes logback.xml pour profil différent, seulement 3 étapes:
1, Spécifiez actived profil en
application.properties
ouapplication.yml
:2, Config logback inclure les différents types de configuration par profil:
3, Créez le fichier de configuration
logback.test.xml
:C'est très simple, n'a pas besoin de faire autre chose.
OriginalL'auteur sulin