Как правильно настроить vert.x для использования logback.xml? - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь написать http-сервер, и я хотел бы выполнить вход, как рекомендовано. Однако статьи, которые я пишу, похоже, не контролируются logback.xml, который я использую.

Затем я пишу простейшую вертикалку, которую я могу придумать, но кажется, что мой logback.xml полностью не работает.

Вот мой пример:

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
import io.vertx.core.logging.Logger;
import io.vertx.core.logging.LoggerFactory;
import io.vertx.core.logging.SLF4JLogDelegateFactory;
public class SimplestVerticle extends AbstractVerticle {
    private static final Logger LOGGER = LoggerFactory.getLogger(SimplestVerticle.class);
    @Override
    public void start(Future<Void> future) {
        Future<Void> newFuture = Future.future();
        LOGGER.debug("This is debug");
        LOGGER.info("This is info");
        LOGGER.error("This is error");
        newFuture.setHandler(future);
    }
}

Вот мой pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>[xxx]</groupId>
    <artifactId>[xxx]</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-core</artifactId>
            <version>3.7.0</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <manifestEntries>
                                        <Main-Class>io.vertx.core.Starter</Main-Class>
                                        <Main-Verticle>
                                            [somepackage.]SimplestVerticle
                                        </Main-Verticle>
                                    </manifestEntries>
                                </transformer>
                            </transformers>
                            <artifactSet/>
                            <outputFile>${project.build.directory}/${project.artifactId}-${project.version}-fat.jar</outputFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

Вот мой logback.xml, который помещен в src / main / resources /

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="error">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>

Однако, когда я запускаю толстый флягу, сгенерированную "mvn package", вывод:

Apr 18, 2019 7:03:31 AM [package.name].SimplestVerticle
INFO: This is info
Apr 18, 2019 7:03:31 AM [package.name].SimplestVerticle
SEVERE: This is error

Журнал на уровне INFO все еще отображается здесь.

1 Ответ

1 голос
/ 19 апреля 2019

В версиях 3.x и ниже вы должны указать бэкэнд регистрации с системным свойством:

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4jLogDelegateFactory

Начиная с версии 4.0 (еще не выпущенной), Vert.x разрешит бэкэнд ведения журнала следующим образом:

  • значение vertx.logger-delegate-factory-class-name sysprop, если имеется, или
  • jdk, если файл vertx-default-jul-logging.properties присутствует:
  • slf4j или
  • log4j или
  • log4j2

Если ничего из вышеперечисленного не сработает, произойдет откат к ведению журнала jdk.

Это поведение согласуется с процессом разрешения бэкэнда логирования в Netty.

...