首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空手道:打印语句不会用log4j2写到控制台

空手道:打印语句不会用log4j2写到控制台
EN

Stack Overflow用户
提问于 2020-11-19 07:18:18
回答 1查看 612关注 0票数 3

我有弹簧引导应用程序和使用空手道测试。我使用log4j2进行日志记录。空手道使用logback作为日志库。我找到了此链接,用于log4j2的基本配置和空手道。但是不幸的是,特性文件中的print语句没有写入控制台。

这是我的简单测试,可以打印到控制台。

代码语言:javascript
复制
Scenario: Print to Console
    * print 'Hello Word'

Log4j2.properties文件

代码语言:javascript
复制
log4j.rootLogger = INFO, CONSOLE
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout

如下面所示,我用此代码将logback依赖项排除在空手道之外。

代码语言:javascript
复制
testImplementation('com.intuit.karate:karate-junit5:0.9.6') {
        exclude module: "logback-classic"
    }
    testImplementation('com.intuit.karate:karate-apache:0.9.6') {
        exclude module: "logback-classic"
    }

分级生成文件

代码语言:javascript
复制
plugins {
    id 'org.springframework.boot' version '2.3.3.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
    id "org.openapi.generator" version "4.3.1"
    //id 'war'
}
group = 'test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    developmentOnly 'org.springframework.boot:spring-boot-devtools'

    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude module: "spring-boot-starter-logging"
        exclude module: "logback-classic"
    }
    implementation('org.springframework.boot:spring-boot-starter-data-jpa') {
        exclude module: "spring-boot-starter-logging"
        exclude module: "logback-classic"
    }
    implementation('org.springframework.boot:spring-boot-starter-validation') {
        exclude module: "spring-boot-starter-logging"
        exclude module: "logback-classic"
    }
    implementation('org.springframework.boot:spring-boot-starter-quartz'){
        exclude module: "spring-boot-starter-logging"
        exclude module: "logback-classic"
    }
    implementation("org.springframework.boot:spring-boot-starter-log4j2")

    implementation 'org.mapstruct:mapstruct:1.4.0.Final'
    implementation 'org.zalando:jackson-datatype-money:1.2.0'

    compileOnly 'org.projectlombok:lombok'


    implementation 'javax.validation:validation-api:2.0.0.Final'
    implementation 'com.vladmihalcea:hibernate-types-52:2.9.13'
    implementation group: 'org.openapitools', name: 'jackson-databind-nullable', version: '0.2.1'

    implementation 'io.swagger:swagger-annotations:1.5.9'
    implementation 'org.javamoney:moneta:1.4.2'

    runtimeOnly 'org.postgresql:postgresql'


    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    annotationProcessor 'org.projectlombok:lombok'
    annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.0.Final'

    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude module: "spring-boot-starter-logging"
        exclude module: "logback-classic"
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }

    testImplementation('com.intuit.karate:karate-junit5:0.9.6') {
        exclude module: "logback-classic"
    }
    testImplementation('com.intuit.karate:karate-apache:0.9.6') {
        exclude module: "logback-classic"
    }
    testCompile group: 'com.h2database', name: 'h2', version: '1.4.200'

}

test {

    useJUnitPlatform()
    environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test"
}

bootRun {
    environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "dev"
}

sourceSets {
    test {
        resources {
            srcDir file('src/test/java')
            exclude '**/*.java'
        }
    }
}

试题班:

代码语言:javascript
复制
import com.intuit.karate.junit5.Karate;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.web.server.LocalServerPort;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class RunAllKarateTest  {

    @LocalServerPort
    private int port;

    @BeforeEach
    void setUp() {
        System.getProperties().setProperty("server.port", String.valueOf(port));
    }

    @Karate.Test
    Karate runAll() {
        return Karate.run().relativeTo(getClass());
    }

}

空手道孔雀

代码语言:javascript
复制
function fn() {

   var port = karate.properties['server.port'];
   if (!port) {
       port = 8080;
     }
    var config = {
        baseUrl : 'http://localhost:'+port,
        uuid: function(){ return java.util.UUID.randomUUID() + '' },
        isoDateTime: function(){ return java.time.OffsetDateTime.now().format(java.time.format.DateTimeFormatter.ISO_DATE_TIME)}
    };


    return config;
}

这是报告截图

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-19 09:26:41

它在更改log4j2.属性文件的配置后开始工作。

新配置如下:

代码语言:javascript
复制
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout = org.apache.log4j.PatternLayout


rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64907009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档