Log4j dans SpringBoot
Je suis novice sur le Printemps de Démarrage et de travailler sur une simple log4j de démonstration à l'aide de Printemps de Démarrage. J'ai utilisé le gradle projet et printemps-amorçage-starter-web et groovy dépendances. Ci-dessous mon log4j.fichier de propriétés de contenu. Tout ce que je besoin est , lorsque j'exécute le programme principal et de l'utilisation de l'annotation @Log4J je dois être en mesure de sauver le journal.perflog à un fichier dans mon local (windows).
log4j.rootLogger = WARN , stdout, cslLog
log4j.logger.perfLog = WARN, perfLog
log4j.additivity.perfLog = false
log4j.appender.perfLog = org.apache.log4j.RollingFileAppender
log4j.appender.perfLog.File = ${GRAILS_HOME}/logs/csl.log
log4j.appender.perfLog.Append = true
log4j.appender.perfLog.ImmediateFlush = true
log4j.appender.perfLog.MaxFileSize=200MB
log4j.appender.perfLog.MaxBackupIndex = 1
Mon exemple groovy Classe:
package sample.actuator.log4j
import groovy.util.logging.Log4j;
import org.apache.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Log4j
@RestController
@EnableAutoConfiguration
class HelloGroovy {
static Logger perfLog = Logger.getLogger("perfLog")
@RequestMapping("/logger")
String logger() {
log.info "created a new item named identifier"
log.error "created a new item named identifier"
log.warn "created a new item named identifier"
System.out.println("Test")
perfLog.trace("Test")
return "Logger Called."
}
static main(args) {
SpringApplication.run(this, args)
}
}
Tous les obtenir, ce sont les 3 premières lignes d'impression dans la console, puis "Test" , le message que rien ne s'affiche dans le fichier je l'ai mentionné dans le log4j.les propriétés.
Mon build.gradle fichier
buildscript {
repositories {
maven {
url 'http://artifactory.myorg.com:8081/artifactory/plugins-release'
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.5.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
jar {
baseName = 'log4jOwn'
}
repositories {
maven {
url 'http://artifactory.myorg.com:8081/artifactory/plugins-release'
}
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.3'
compile 'org.springframework.boot:spring-boot-starter-web'
testCompile("junit:junit")
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
log4j.properties
sera ignoré.Oui, j'ai ajouté le dossier de ressources comme un dossier source et il a le log4j.propriétés en elle.
OriginalL'auteur Vinodh Thiagarajan | 2014-08-28
Vous devez vous connecter pour publier un commentaire.
Vous avez
spring-boot-starter-web
comme une dépendance directe et on ne veut pas utiliser log4j pour la journalisation afin log4j n'est pas sur votre classpath. Vous devez exclure lesspring-boot-starter-logging
et comprennentspring-boot-starter-log4j
(comme ici https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-actuator-log4j/pom.xml#L36 - c'est Maven, mais si vous savez Gradle vous pouvez comprendre comment le faire de la même chose).Gradle équivalent:
(Merci à celui qui a posté qu'un edit.)
Cela n'a pas fonctionné pour moi. J'ai effectivement eu à supprimer slf4j de la log4j2 starter! compiler('org.springframework.démarrage:printemps-amorçage-starter-log4j2'){ exclure du groupe: 'org.apache.la journalisation.log4j', module: 'log4j-slf4j-impl'}
Merci pour l'astuce @szxnyc - Qui a fonctionné pour moi.
OriginalL'auteur Dave Syer
J'ai eu le même problème et à l'exclusion de printemps-amorçage-starter-journalisation, logback, log4j-sur-slf4j et l'ajout de printemps-amorçage-starter-log4j a fonctionné pour moi.
OriginalL'auteur JCasso
Je suis à l'aide de Gradle 4.4.1, et apparemment
sera pas exclure la valeur par défaut printemps-amorçage-starter-journalisation, mais
vont l'exclure.
Donc je l'ai eu à travailler avec
OriginalL'auteur lok77chan
Vous devez ajouter le
perfLog
appender à la rootLogger de sorte que par défaut messages de journalisation sortir de ce fichier. La première ligne de votre log4j.les propriétés de fichier devrait se lire comme:OriginalL'auteur Mark Vieira