как получить версию проекта maven в logback.xml

#java #logging #log4j #logback

#java #ведение журнала #log4j #возврат в систему

Вопрос:

как я могу получить версию проекта maven в файле конфигурации logback, поскольку я хочу зарегистрировать номер версии проекта. вот файл maven.

 <groupId>com.shanil</groupId>
<artifactId>loggingDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>loggingDemo</name>
<description>Demo project for Spring Boot logging</description>
 

вот файл конфигурации обратного входа в систему

  <appender name="Console"
    class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            CEF:1|CompanyTest|%X{nameofapplication:-loggingDemo}|**version number here**| %msg%n 
        </Pattern>
    </layout>
</appender>
 

Ответ №1:

У вас может быть шаг сборки, который принимает файл обратной записи шаблона и заполняет некоторые заполнители. С точки зрения logback, версия тогда будет просто произвольной строкой, как CEF:1|CompanyTest| и часть.

Плагин ресурсов Maven должен быть в состоянии достичь этого. Он использует «фильтрацию» для замены заполнителей.

 <build>
    <resources>
        <resource>
            <includes>
                <include>some/dir/logback.template.xml</include>
            </includes>
            <targetPath>some/outputpath/logback.xml</targetPath>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>
 

Ваш шаблон обратной регистрации будет выглядеть примерно так

 <Pattern>
    CEF:1|CompanyTest|%X{nameofapplication:-loggingDemo}|${project.artifact.id}| %msg%n 
</Pattern>
 

Возможно, вы захотите поиграть с изменением разделителя; не уверен, будет ли формат по умолчанию ${...} хорошо сочетаться с форматом logback {...} . Таким образом, вы могли бы изменить разделитель на ** или что-то в этом роде.

Комментарии:

1. вышеупомянутое решение должно было сработать, но я пробовал так много раз, и ничего не работает. он не изменяет конфигурационный файл logback. если вы не возражаете, было бы здорово, если бы вы могли предоставить образец проекта через git или что-то в этом роде, и это действительно очень помогло бы мне. Спасибо

2. спасибо за идею. Я заставил это работать. проблема была с разделителем

Ответ №2:

вот ответ . шаблон

    <Pattern>
    CEF:1|CompanyTest|%X{nameofapplication:-loggingDemo}|${project.artifact.id}| %msg%n 
</Pattern>
 

pom.xml

      <resources>
              <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>logback-test.xml</include>
                </includes>
             </resource>

        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                    <encoding>UTF-8</encoding>
                    <delimiters>
                        <delimiter>${*}</delimiter>
                    </delimiters>
                </configuration>
            </plugin>
      </plugins>