加特林 - 如何在 scala 中设置加特林控制台日志级别



>我创建了一个 maven 项目,该项目将生成一个包含我所有模拟的 jar 文件,当我运行它时,控制台日志级别太高。对我来说有太多无用的信息。 有没有办法在代码中配置它?这是我的代码:

import io.gatling.app.Gatling
import io.gatling.core.config.GatlingPropertiesBuilder 
import io.gatling.core.config.GatlingConfiguration
object Engine extends App {
val props = new GatlingPropertiesBuilder
if(System.getProperty("resultsFolder") == null){
props.resultsDirectory("results")
}else{
props.resultsDirectory(System.getProperty("resultsFolder"))
}
props.dataDirectory("data")
props.simulationClass(System.getProperty("simulationClass"))
Gatling.fromMap(props.build)
sys.exit()
}

这是我目录的树:

¦   dependency-reduced-pom.xml
¦   pom.xml
¦
+---src
+---main
¦   +---resources
¦   +---scala
¦       +---myPackage
¦                   ¦   Engine.scala
¦                   ¦
¦                   +---simulation
¦                           BasicSimulation.scala
¦
+---test
+---resources
¦       application.conf
¦       gatling.conf
¦       logback-test.xml
¦
+---scala
Placeholder.scala

.config文件和logback是Gatling的默认文件。

以下是您的操作方法:

package gatling.simulations
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
import org.slf4j.LoggerFactory
import ch.qos.logback.classic.{Level, LoggerContext}
class FooSimulation extends Simulation {
val context: LoggerContext = LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext]
// Log all HTTP requests
context.getLogger("io.gatling.http").setLevel(Level.valueOf("TRACE"))
// Log failed HTTP requests
//context.getLogger("io.gatling.http").setLevel(Level.valueOf("DEBUG"))
...

我找到了一个解决方案:将日志级别放在引擎中,而不是重新生成logbaxk.xml文件:

import io.gatling.app.Gatling
import io.gatling.core.config.GatlingPropertiesBuilder 
import io.gatling.core.config.GatlingConfiguration
import org.slf4j.LoggerFactory
import java.util.logging.{Level, Logger}
object Engine extends App {
LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME).asInstanceOf[Logger].setLevel(Level.WARNING)
val props = new GatlingPropertiesBuilder
if(System.getProperty("resultsFolder") == null){
props.resultsDirectory("results")
}else{
props.resultsDirectory(System.getProperty("resultsFolder"))
}
props.dataDirectory("data")
props.simulationClass(System.getProperty("simulationClass"))
Gatling.fromMap(props.build)
sys.exit()
}

我像:mvn clean gatling:execute@slalom -DLOG_LEVEL=WARN

WARN替换为任何其他级别,它将按此显示。

然后LOG_LEVEL在编译期间直接在logback测试中替换.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<properties>
<LOG_LEVEL>WARN</LOG_LEVEL>
</properties>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
<immediateFlush>false</immediateFlush>
</encoder>
</appender>
<!-- Uncomment for logging ALL HTTP request and responses -->
<logger name="io.gatling.http" level="${LOG_LEVEL}" default = "WARN"/>
<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
<!--<logger name="io.gatling.http" level="WARN" />-->
<root level="${LOG_LEVEL}" default="WARN">
<appender-ref ref="CONSOLE" />
</root>

-->

最新更新