gpt4 book ai didi

java - KARATE:打印语句不会使用 log4j2 写入控制台

转载 作者:行者123 更新时间:2023-12-04 08:33:42 63 4
gpt4 key购买 nike

我有 spring boot 应用程序并使用 Karate 进行测试。我使用 log4j2 进行日志记录。 Karate 使用 logback 作为日志库。我找到了 this link Karate 的 log4j2 的基本配置。但不幸的是,功能文件中的打印语句并未写入控制台。

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

Scenario: Print to Console
* print 'Hello Word'

Log4j2.properties 文件

log4j.rootLogger = INFO, CONSOLE
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout

正如你在下面看到的,我用这段代码从 Karate 中排除了 logback 依赖

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"
}

Gradle 构建文件

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'
}
}
}

测试类:

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());
}

}

Karate 配置

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;
}

这是报告截图

enter image description here

最佳答案

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

新配置如下:

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

关于java - KARATE:打印语句不会使用 log4j2 写入控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64907009/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com