Почему пакетное приложение с весенней загрузкой не выводится на консоль? - PullRequest
2 голосов
/ 25 марта 2019

Я использую стартер спринта с пружинным замком. Я регистрирую все, чтобы регистрировать файл и консоль. Я использую аннотацию как @Slf4j на уровне класса с lomback. В файле журнала все в порядке, но замечание выходит из консоли. Я использую файл perl, который запускает файл сценария оболочки, а файл оболочки выполняет файл jar, который состоит из всех моих пакетных приложений.

Мой perl-файл запускает файл оболочки, а файл оболочки обрабатывает файл jar.

Perl:

$command = ". $ENV{'TARI_SOMPROGS'}$bin_pad"."StartAggr.sh $jaa $maan $ENV{'TARI_DBNAAM'} $td 1 1>&2 ";
      start_ica_shell($command);

файл оболочки:

java -jar ${TARI_SOFTWARE}/aggre/jar/spring-batch-article-0.0.1-SNAPSHOT.jar $JAA $MAAN $DATABASE $TARI $AGGR_TYPE

Почему он не печатает на консоль?

Что я пробовал: Первый Я использовал logback-spring.xml с конфигурацией в application.properties, как показано ниже:

<configuration scan="true" debug="true">
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="guru.springframework.controllers" level="WARN" additivity="false">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</logger>
<logger name="guru.springframework.helpers" level="WARN" additivity="false">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</logger>

и application.properties

    spring.application.name=aggregation
spring.main.banner-mode=log
debug=true
spring.batch.job.enabled=false
spring.output.ansi.enabled=detect
logging.level.root=WARN
logging.level.com.ava.batch=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.springframework.sql=DEBUG
logging.level.org.hibernate=ERROR
logging.file.max-size = 11
logging.pattern.console= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
logging.file =/ava/tar/print/log/aggregatie/${spring.application.name}.log
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"

и мой 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>com.toptal</groupId>
    <artifactId>spring-batch</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>spring-batch-article</name>
    <description>Demo project for Spring Batch</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/>
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--<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-batch</artifactId>
            <version>2.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-cli -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-cli</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>
        <!--Logback Begin-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!--Logback End-->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.3.RELEASE</version>
            </plugin>
        </plugins>
    </build>

</project>

Во-вторых Я использовал logback.xml, как показано ниже:

    <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="30 seconds">
    <property name="LOG_PATH" value="/ava/tari/print/log/aggregatie" />
    <property name="LOG_ARCHIVE" value="${LOG_PATH}/archive" />
    <timestamp key="timestamp-by-second" datePattern="yyyyMMdd'T'HHmmss"/>
    <appender name="Console-Appender" class="ch.qos.logback.core.ConsoleAppender">
        <layout>
            <pattern>%msg%n</pattern>
            <!--<pattern>%d{yyyy/MM/dd uu:mm:ss, SSS} [%thread] %-5level %logger{36} -%m %throwable{0} %n</pattern>-->
        </layout>j
    </appender>
    <appender name="File-Appender" class="ch.qos.logback.core.FileAppender">
        <file>${LOG_PATH}/logfile-${timestamp-by-second}.log</file>
        <encoder>
            <!--<pattern>%msg%n</pattern>-->
            <pattern>%d{yyyy/MM/dd uu:mm:ss, SSS} [%thread] %-5level %logger{36} -%m %throwable{0} %n</pattern>
            <outputPatternAsHeader>true</outputPatternAsHeader>
        </encoder>
    </appender>
    <appender name="RollingFile-Appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/rollingfile.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_ARCHIVE}/rollingfile.log%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1KB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <!--<pattern>%msg%n</pattern>-->
            <pattern>%d{yyyy/MM/dd uu:mm:ss, SSS} [%thread] %-5level %logger{36} -%m %throwable{0} %n</pattern>
        </encoder>
    </appender>
    <appender name="Async-Appender" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="RollingFile-Appender" />
    </appender>

    <logger name="be.kava.batch.aggregation"  level="info" additivity="false">
        <appender-ref ref="Console-Appender" />
        <appender-ref ref="File-Appender" />
        <appender-ref ref="Async-Appender" />
    </logger>
    <root>
        <appender-ref ref="Console-Appender" />
    </root>
</configuration>

1 Ответ

0 голосов
/ 25 марта 2019

Я добавил select STDOUT; в файл perl перед запуском команды оболочки mijn, как показано ниже.Это решило проблему перенаправления вывода обратно в нормальное состояние.

select STDOUT;
$command = ". $ENV{'TARI_SOMPROGS'}$bin_pad"."StartAggr.sh $jaa $maan $ENV{'TARI_DBNAAM'} $td 1 1>&2 ";
      start_ica_shell($command);
...