Spring Загрузка: как установить уровень ведения журнала с помощью application.properties?

Это очень простой вопрос, но я не могу найти информацию. (Возможно, мои знания о Java-инфраструктурах сильно отсутствуют)

Как установить уровень ведения журнала с помощью application.properties?
И регистрировать местоположение файла и т.д.

Ответ 1

Обновление: Начиная с Spring Boot v1.2.0.RELEASE, применяются настройки в application.properties или application.yml. См. Раздел Уровень журналов справочного руководства.

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

Для более ранних версий Spring Boot вы не можете. Для этого вам просто нужно использовать обычную конфигурацию для вашей системы ведения журнала (log4j, logback). Добавьте соответствующий конфигурационный файл (log4j.xml или logback.xml) в каталог src/main/resources и настройте его по своему вкусу.

Вы можете включить ведение журнала отладки, указав --debug при запуске приложения из командной строки.

Spring Boot также является хорошей отправной точкой для регистрации для настройки некоторых значений по умолчанию, раскраски и т.д. файла base.xml, который вы можете просто включить в свой журнал .xml. (Это также рекомендуется по умолчанию logback.xml в Spring Boot.

<include resource="org/springframework/boot/logging/logback/base.xml"/>     

Ответ 2

Это можно сделать с помощью application.properties.

logging.level.=ERROR → Устанавливает уровень корневого журналирования на ошибку
...
logging.level.=DEBUG → Устанавливает уровень корневого ведения журнала на DEBUG

logging.file=${java.io.tmpdir}/myapp.log → Устанавливает путь к файлу абсолютного файла журнала в TMPDIR/myapp.log

Разумный набор параметров application.properties в отношении ведения журнала с использованием профилей: application.properties:

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log

application-dev.properties:

logging.level.=DEBUG
logging.file=

Когда вы разрабатываете внутри своей любимой среды IDE, вы просто добавляете -Dspring.profiles.active=dev в качестве аргумента VM в конфигурацию запуска/отладки вашего приложения.

Это позволит вам регистрировать только ошибки в ведении журнала производства и отладки во время разработки БЕЗ записи вывода в файл журнала. Это улучшит производительность во время разработки (и сохранит накопители SSD несколько часов работы;)).

Ответ 3

Правильный способ установки уровня корневого ведения журнала используется с помощью свойства logging.level.root. См. документация, которая была обновлена, поскольку этот вопрос изначально был задан.

Пример:

logging.level.root=WARN

Ответ 4

Предположим, что ваше приложение имеет имя пакета com.company.myproject. Затем вы можете установить уровень ведения журнала для классов внутри вашего проекта, как указано ниже в файлах application.properties.

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUG и logging.level.org.hibernate = DEBUG задает уровень ведения журнала для классов Spring веб-фреймворка и только Hibernate.

Для настройки местоположения файла журнала используйте

logging.file =/home/ubuntu/myproject.log

Ответ 5

Уверенность в том, что подсказка Dave Syer получает некоторую любовь, потому что добавление debug=true в application.properties действительно позволит вести отладочную запись.

Ответ 6

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

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

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

Ответ 7

В случае, если вы хотите использовать другую структуру ведения журнала, например log4j, я нашел, что самый простой подход - отключить ведение журнала Spring Boots и реализовать свои собственные. Таким образом, я могу настроить каждый loglevel в одном файле log4j.xml (в моем случае).

Для этого вам просто нужно добавить эти строки в свой pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

Вероятно, у вас уже есть первая зависимость, и вам нужны только два других. Обратите внимание, что этот пример охватывает только log4j.
Все это, теперь вы настроены на настройку ведения журнала для загрузки в файле конфигурации log4j!

Ответ 8

Для записей: официальная документация, как для Spring Boot v1.2.0.RELEASE и Spring v4.1.3.RELEASE

Если единственное изменение, которое вам нужно сделать для ведения журнала, - это установить уровни различных регистраторов, то вы можете сделать это в application.properties, используя префикс "logging.level", например

logging.level.org.springframework.web: DEBUG     logging.level.org.hibernate: ERROR

Вы также можете указать местоположение файла для входа в систему (в дополнение к консоли) с помощью "logging.file".

Чтобы настроить более мелкие настройки системы ведения журналов, вам необходимо использовать собственный формат конфигурации, поддерживаемый LoggingSystem. По умолчанию Spring Boot выбирает собственную конфигурацию из своего местоположения по умолчанию для системы (например, classpath: logback.xml для журнала), но вы можете установить расположение файла конфигурации с помощью свойства "logging.config".

Ответ 9

В случае Eclipse IDE и вашего проекта maven, не забудьте очистить и построить проект, чтобы отразить изменения.

Ответ 10

Если вы хотите установить более подробно, добавьте имя файла конфигурации журнала "logback.xml" или "logback- spring.xml".

в файле application.properties введите следующее:

logging.config: classpath:logback-spring.xml

в loback- spring.xml, введите вот так:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>

        <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>sys.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>business.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <logger name="{project-package-name}" level="TRACE">
            <appender-ref ref="BUSINESS_APPENDER" />
        </logger>

        <root level="INFO">
            <appender-ref ref="ROOT_APPENDER" />
        </root>

    </configuration>

Ответ 11

в весеннем загрузочном проекте мы можем написать logging.level.root = WARN, но здесь проблема в том, что мы должны перезапустить снова, даже если мы добавили зависимость devtools, в файле свойств, если мы изменим, любое значение не будет автоматически определяться, для этого ограничения я узнал решение, то есть мы можем добавить привод в pom.xml и передать уровень ведения журнала, как показано ниже, как показано в клиенте почтальона в строке URL http://localhost: 8080/loggers/ROOT или http://localhost: 8080/loggers/ и в теле вы можете передать формат JSON, как показано ниже

{
  "configuredLevel":null
   effectiveLevel":"WARN"

}

Ответ 12

Существующие ответы велики. Я просто хочу поделиться с вами новой функцией весенней загрузки, позволяющей группировать журналы и устанавливать уровень журналирования для всей группы.

Исключить из документов:

  • Создать группу регистрации
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
  • Установите уровень регистрации для группы
logging.level.tomcat=TRACE

Это хорошая особенность, которая приносит больше гибкости.