Весна загрузки - файл журнала записывается (лесозаготовки.файл не соблюдается)


Я использую Spring Boot и хочу, чтобы он записывал выходные данные журнала в файл.

Согласно документам, это просто делается путем установки

logging.file=filename.log

Хотя вывод консоли работает нормально, filename.log не создается. Кроме того, если я создаю файл вручную, в него ничего не записывается. Чего мне не хватает?

8 18

8 ответов:

Я нашел решение. Я не очень доволен им, так как он все еще не отвечает на мой первоначальный вопрос, почему не соблюдается свойство logging.file.

Я создал logback-spring.xml из ответа Жоржа в том же каталоге, где находится application.properties. Согласно документации Spring Boot заберет его оттуда. Видимо, в моем случае этого не происходит.

Мне нужно дополнительно добавить logging.config=classpath:logback-spring.xml, чтобы он был поднят весной. Соответствующие части моего application.properties являются теперь

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

(я создал каталог logs вручную.)

Я не знаю, поможет ли это вам, но я также использую Logback в моем проекте Spring-Boot, и структура такова, как показано ниже

Введите описание изображения здесь

Файл: 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>

Файл: приложение.свойства

app.logPathPrefix=/var/log/myproject

Вот как мне удалось записать выходные данные в локальный файл file. Чтобы отключить ведение журнала консоли и записывать выходные данные только в файл, вам нужен пользовательский logback-spring.xml ( назовем его logback-spring.xml таким образом, вы воспользуетесь преимуществами шаблонов (форматирование даты и т. д..) обеспечивается загрузкой) , которая импортирует файл-аппендер.xml вместо консольного аппендера.XML. Чтобы достичь этого, вы должны вставить этот код ниже в свой logback-spring.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> 

Вам также необходимо добавить в приложение следующее.свойства:

logging.file=myapplication.log

Обратите внимание, что этот файл журнала myapplication.log будет сгенерирован springboot.

Вот как выглядит мое дерево структуры приложения:

Введите описание изображения здесь

Если вы хотите получить больше удовольствия, вы можете найти базу.xml в зависимостях maven выглядит следующим образом:

Введите описание изображения здесь

Если вы используете Maven, добавьте зависимость:

<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>

Теперь вам нужно указать файл с именем 'log4j. properties', который вы должны поместить в определенный каталог: 'src / main / resources/log4j. properties'

Вот как должен выглядеть файл, например:

# 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

Теперь импортируем их:

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

Объявите переменную logger следующим образом:

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

И использовать его в классе следующим образом:

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

Таким образом, это работает для меня. Я надеюсь, что это ответ поможет вам . Удачи вам !

PS: log4j. appender.файл.File= 'directory' - это способ указания места хранения журналов. Если вы не указываете каталог и просто оставляете его в качестве имени файла.log этот файл будет автоматически создан в проекте dir.

У меня была та же проблема. Скорее всего, это связано с правами доступа к файлам в файловой системе. У меня была папка приложения, принадлежащая root, но ./ журналы, принадлежащие владельцу процесса. Таким образом, не сработало следующее:

Ведение журнала.файл=мой.log

Но это было

Ведение журнала.file= / opt / myapp / logs / my.log

Я только что использовал механизм регистрации с пружинным загрузчиком. Я писал ниже в Logback так моя '.xml-файл:

<?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>

Я поставил оба приложения.свойства и Logback так.xml-файл в том же пакете 'src / main / resources'. В применении.файл свойств только что добавил один параметр:

logging.file = xyz.log

Для меня это сработало прекрасно.

В моем случае я добавил файл " logback.xml " в одном из моих субмодулей по ошибке, которая вызвала эту проблему, удалите его, и все будет хорошо.

Если вы находитесь на Spring Boot, то вы можете непосредственно добавить следующие свойства в приложении.свойства файл для установки уровня ведения журнала, настроить шаблон ведения журнала и хранить журналы во внешнем файле.

Это разные уровни ведения журнала и его порядок от минимального

ВЫКЛ

# 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"

Пожалуйста, перейдите по этой ссылке, чтобы настроить свои журналы подробнее ярко.

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