Вот как вы делаете новое приложение. Вы столкнетесь с различными проблемами. Вчера я только что решил, что проблема класса не видна из загрузчика класса при загрузке определенного класса. Сегодня я столкнулся с проблемой отсутствия файла журнала, который связан со второй личной библиотекой. Давайте поговорим об этом один за другим.
При нормальных обстоятельствах поместите файл конфигурации restrack-spring.xml в каталоге SRC/Main/Resources (с использованием системы журнала журнала), как показано на рисунке ниже.
SET Spring.Application.name = Spring-Boot-Demo-application в Application.properties
У двухпартийного пакета есть logback.xml в нем
Согласно вышеуказанной конфигурации, после запуска при нормальных обстоятельствах мы надеемся, что файл журнала Application.Log должен быть включен в каталог user.home/spring-boot-demo-application/logs, но это не так. Даже папка Spring-Boot-Demo-Application не была сгенерирована.
Итак, давайте посмотрим, как система журнала находит и анализирует файл конфигурации журнала. Springboot использует класс LoggingApplicationListener для инициализации системы журнала. LoggingApplicationListener реализует интерфейс ApplicationListener. Тогда мы можем увидеть, что метод onapplicationEvent от loggingApplicationLization, через диаграмму времени:
Код (8) Найдите стандартный файл конфигурации журнала. Какой стандарт? Затем посмотрите на код кода (9):
Защищенная string [] getStandardConfiglocations () {return new String [] {"rescack-test.groovy", "logback-test.xml", "logback.groovy", "rageback.xml"}; }Как и "logback-test.groovy", "logback-test.xml", "logback.grovy", "logback.xml" Это стандартные.
Так как найти это зависит от кода (10):
Private String findConfig (String [] socations) {for (String location: locations) {classpathresource resource = new classpathresource (location, this.classloader); if (resource.exists ()) {return "classpath:" + location; }} return null; }Можно видеть, что использование класса класса ClassPathresource для поиска, давайте посмотрим на метод существующего класса.
public boolean существует () {return (resolveurl ()! = null); } защищенный URL ResolveUrl () {if (this.clazz! = null) {return this.clazz.getresource (this.path); } else if (this.classloader! = null) {return this.classloader.getResource (this.path); } else {return classloader.getSystemresource (this.path); }}Видно, что это. Чтобы найти загрузку класса в качестве Appclassloader.
Если код (8) не находит конфигурацию, то точка выполнения (12). Логика и код (8) похожи, но имя файла отличается. Давайте посмотрим на:
Защищенная string [] getSpringConfiglocations () {String [] locations = getStandardConfiglocations (); for (int i = 0; i <locations.length; i ++) {string extension = stringUtils.getFilenameExtension (местоположения [i]); местоположения [i] = локации [i] .substring (0, местоположения [i] .length () - extension.length () - 1) + "-spring." + расширение; } return Locations; }Видно, что пружина сплайсирован на имя файла getStandardConfiglocations, а сплайсированное имя файла:
«` `Regackback-test-spring.groovy», «restrack-test-spring.xml», «restrack-spring.groovy», «logback-spring.xml»
Подводя итог, Springboot сначала ищет стандартный файл конфигурации журнала. Если вы не можете найти файл, который разбивает конфигурацию пружины.
Таким образом, выше мы сказали, что в приложении был введен пакет JAR, содержащий rageback.xml, и этот пакет JAR также загружается с помощью AppClassLoader. Следовательно, при выполнении шага (8) был найден regback.xml в пакете JAR, поэтому мы больше не будем выполнять шаг (12), чтобы найти наш настраиваемый rescack-spring.xml.
Решение 1: Измените наш файл конфигурации на Logback.xml, так что на шаге (8) вы сначала найдете logback.xml, который следует найти.
Решение 2: Избегайте двухпартийных пакетов, содержащих restabback.xml. В этом случае не возникнет проблемы, является ли наша собственная конфигурация rogack-spring.xml или recoreback.xml.
В ежедневной разработке пакет второй стороны не должен содержать файлы конфигурации журнала. Журналы, используемые в библиотеке второй стороны, обычно создаются с использованием кода.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.