В приложении Spring Boot, недавно обновленном с Boot 2.5 до 3.2.4. Мы всегда использовали свойство конфигурации logging.file.name
, чтобы указать, где создаются файлы журналов, и никогда не возникало проблем. Однако после обновления до Boot 3 мы больше не создаем файлы журналов.
Мы используем YAML для внешней конфигурации, и я безуспешно пробовал все следующее:
logging:
file:
name: logs/my-app-log.txt
logging:
file:
path: logs
-Dlogging.file.name=appLog.txt
передается командная строка, запускающая приложение.
Независимо от того, что я пытаюсь, я никогда не создаю файл журнала, только ведение журнала консоли.
У нас нет никаких пользовательских файлов logback-spring.xml или других файлов конфигурации impl.
На всякий случай я дважды проверил документацию, чтобы подтвердить, что эти свойства (по-прежнему) имеют правильные имена — так оно и есть. Я также подтвердил, что никакие разрешения файловой системы не изменились, и учетная запись пользователя, запускающая приложение, может писать в папки.
Какие еще могут быть причины отсутствия создания файлов журналов?
Установив для системного свойства logback.debug
значение true
(я передал -Dlogback.debug=true
в командной строке, которая запускает мое приложение), я смог увидеть, что Logback находит файл конфигурации logback.xml
в пути к классам. Он был встроен в мою зависимость, а это категорически запрещено для публикации библиотек.
В этом файле logback.xml
не было приложения к файлу, поэтому файлы журналов для моего приложения не создавались - наличие logback.xml
в пути к классам является частью механизма обнаружения конфигурации Logback и приводит к обходу собственной конфигурации Spring Boot по умолчанию. .
Одним из обходных путей было бы создать собственный файл logback.xml
в папке src/main/resources
моего приложения (при использовании Gradle или Maven) и полностью настроить там Logback.
К счастью для меня, существование logback.xml
в этой зависимости уже было отмечено как ошибка и исправлено в новой версии; обновление моей зависимости до новой версии решило проблему.