Démarrage au printemps - pas de fichier journal écrit (journalisation.le dossier n'est pas respecté)

J'utilise le démarrage de printemps et je veux qu'il écrive la sortie de journal dans un fichier.

selon les docs, cela se fait simplement en mettant

logging.file=filename.log

alors que la sortie de la console fonctionne bien, filename.log n'est pas créé. Aussi, si je crée le fichier manuellement, rien n'est écrit. Que dois-je manquer?

18
demandé sur Christoph Möbius 2016-07-22 16:02:47

8 réponses

j'ai trouvé une solution. Je n'en suis pas très satisfait car il ne répond toujours pas à ma question initiale pourquoi le logging.file propriété n'est pas respectée.

j'ai créé le logback-spring.xml de Georges"réponse dans le même répertoire où application.properties réside. Selon l' documentation la botte de printemps le récupérera de là. Apparemment, cela ne se produit pas dans mon cas.

je dois en outre ajouter logging.config=classpath:logback-spring.xml dans l'ordre, il est ramassé par Printemps. Les parties pertinentes de mon application.properties sont

logging.config=classpath:logback-spring.xml
logging.file=logs/logfile.log

(j'ai créé le logs répertoire manuellement.)

9
répondu Christoph Möbius 2017-05-23 11:55:05

Je ne sais pas si cela pourrait vous aider mais J'utilise aussi Logback dans mon

enter image description here

Fichier: logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="logback.xsd">

    <property resource="\application.properties"/>

    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${app.logPathPrefix}/myproject.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${app.logPathPrefix}/myproject.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger:%line] %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger:%line] %msg%n
            </pattern>
        </encoder>
    </appender>


    <logger name="org.springframework" level="INFO" />
    <logger name="com.mycompany" level="INFO" />
    <logger name="org.hibernate" level="DEBUG" />


    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

Fichier: application.propriétés

app.logPathPrefix=/var/log/myproject
3
répondu Ravindran Kanniah 2016-07-25 16:38:26

Voici comment j'ai réussi à écrire la sortie dans un fichier local un fichier. Pour désactiver la journalisation et l'écriture de la sortie de la console uniquement dans un fichier, vous avez besoin d'un logback-printemps.xml( appeler logback-printemps.xml vous allez donc profiter des fonctionnalités de templating (mise en forme de la date, etc.).) fourni par Boot) que les importations fichier-appender.xml au lieu de console-appender.XML. Pour ce faire, vous devez coller ce code ci-dessous dans votre logback-printemps.fichier xml.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration> 

vous devez aussi ajouter ce qui suit à votre application.propriétés:

logging.file=myapplication.log

Notez que ce fichier journal myapplication.journal sera généré par springboot.

voici à quoi ressemble mon arbre de structure d'application:

enter image description here

si vous voulez avoir plus de plaisir, vous pouvez localiser la base.xml dans vos dépendances maven comme ceci:

enter image description here

3
répondu georges van 2016-07-26 16:14:06

Si vous utilisez Maven ajouter la dépendance :

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.6</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

maintenant vous devez spécifier un fichier qui s'appelle 'log4j.propriétés' que vous devez mettre dans le répertoire spécifique : 'src/main/resources/log4j.propriétés '

Voici comment le fichier devrait être:

# Root logger option
log4j.rootLogger=INFO, file, stdout
log4j.logger.org.springframework.ws.client.MessageTracing.sent=TRACE
log4j.logger.org.springframework.ws.client.MessageTracing.received=TRACE

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# log4j.appender.springlog.Threshold=INFO
log4j.appender.springlog.layout=org.apache.log4j.PatternLayout
log4j.appender.springlog.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:/example/filename.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

maintenant, importez ceci:

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

déclarez une variable logger comme ceci:

final static Logger logger = Logger.getLogger(TheClassYourIn.class);

Et l'utiliser dans la classe comme ceci :

logger.info("Well hello world then ");

de cette façon, ça marche pour moi. J'espère que cette réponse vous aidera . Bonne chance !

PS: log4j.appender.fichier.File= 'directory' est la façon de spécifier où les journaux doivent être stockés. Si vous ne spécifiez pas un répertoire et le laissez comme nom de fichier.log ce fichier sera créé automatiquement dans le projet dir.

1
répondu Lazar Lazarov 2016-07-22 15:31:10

j'ai eu le même problème. C'est probablement dû aux permissions de fichiers sur le système de fichiers. J'avais le dossier d'application appartenant à root, mais ./ grumes appartenant au propriétaire du procédé. Par conséquent, les mesures suivantes n'ont pas fonctionné:

journalisation.fichier=ma.journal

mais ce n'

journalisation.fichier=/opt/myapp/logs/ma.journal

0
répondu beaudet 2017-06-22 19:42:47

je viens d'utiliser le mécanisme de journalisation fourni par la botte de printemps. J'ai écrit ci-dessous dans mon logback.xml fichier :

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/file- appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>

j'ai mis les deux.propriétés et logback.fichier xml sous le même paquet " src/main/resources. En application.le fichier de propriétés vient d'ajouter un paramètre:

logging.file = xyz.log

ça a très bien fonctionné pour moi.

0
répondu Punit 2017-07-11 14:46:42

Dans mon cas, j'ai ajouté un fichier "logback.xml" dans une de mes sous-module par erreur qui a causé ce problème, supprimer et tout ira bien.

0
répondu July 2017-09-14 11:18:43

si vous êtes sur la botte de printemps, alors vous pouvez directement ajouter les propriétés suivantes dans l'application.propriétés fichier pour définir le niveau de journalisation, personnaliser le modèle de journalisation et stocker les journaux dans le fichier externe.

Ce sont différents niveaux de journalisation et son ordre par rapport au minimum << maximum.

OFF < < FATAL < < ERROR < < WARN < < INFO < < DEBUG < < TRACE < < ALL

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, your logs it won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

veuillez passer par ce lien pour personnaliser vos logs plus vivement.

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

0
répondu Hardik Patel 2018-02-18 17:35:25