Skip to content

Commit bc5f8b9

Browse files
committed
[FLINK-36278] Reduce log size by avoiding container logs by default
Currently, container logs appear under an o.a.f logger and thus are visible on CI. This results in compressed log size >40MB for a run and often leads to download errors. This PR reroutes container logs to a special container logger. It also uses a custom format to significantly reduce the size of each log line. The logs for containers are disabled by default.
1 parent 7929b16 commit bc5f8b9

File tree

10 files changed

+26
-20
lines changed

10 files changed

+26
-20
lines changed

flink-connector-kafka-e2e-tests/flink-end-to-end-tests-common-kafka/src/test/java/org/apache/flink/tests/util/kafka/SmokeKafkaITCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class SmokeKafkaITCase {
7878

7979
@Container
8080
public static final KafkaContainer KAFKA_CONTAINER =
81-
createKafkaContainer(KAFKA, LOG)
81+
createKafkaContainer(KAFKA)
8282
.withEmbeddedZookeeper()
8383
.withNetwork(NETWORK)
8484
.withNetworkAliases(INTER_CONTAINER_KAFKA_ALIAS);

flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/FlinkKafkaInternalProducerITCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class FlinkKafkaInternalProducerITCase {
6161

6262
@Container
6363
private static final KafkaContainer KAFKA_CONTAINER =
64-
createKafkaContainer(KAFKA, LOG).withEmbeddedZookeeper();
64+
createKafkaContainer(KAFKA).withEmbeddedZookeeper();
6565

6666
@Test
6767
void testInitTransactionId() {

flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/KafkaSinkITCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public class KafkaSinkITCase extends TestLogger {
124124

125125
@ClassRule
126126
public static final KafkaContainer KAFKA_CONTAINER =
127-
createKafkaContainer(KAFKA, LOG)
127+
createKafkaContainer(KAFKA)
128128
.withEmbeddedZookeeper()
129129
.withNetwork(NETWORK)
130130
.withNetworkAliases(INTER_CONTAINER_KAFKA_ALIAS);

flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/KafkaTransactionLogITCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public class KafkaTransactionLogITCase extends TestLogger {
5757

5858
@ClassRule
5959
public static final KafkaContainer KAFKA_CONTAINER =
60-
createKafkaContainer(KAFKA, LOG).withEmbeddedZookeeper();
60+
createKafkaContainer(KAFKA).withEmbeddedZookeeper();
6161

6262
private final List<Producer<byte[], Integer>> openProducers = new ArrayList<>();
6363

flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/sink/KafkaWriterTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public abstract class KafkaWriterTestBase {
7373
protected TriggerTimeService timeService;
7474

7575
protected static final KafkaContainer KAFKA_CONTAINER =
76-
createKafkaContainer(KAFKA, LOG)
76+
createKafkaContainer(KAFKA)
7777
.withEmbeddedZookeeper()
7878
.withNetwork(NETWORK)
7979
.withNetworkAliases(INTER_CONTAINER_KAFKA_ALIAS);

flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/testutils/KafkaUtil.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
package org.apache.flink.connector.kafka.testutils;
2020

21-
import org.apache.flink.util.StringUtils;
22-
2321
import org.apache.kafka.clients.consumer.ConsumerConfig;
2422
import org.apache.kafka.clients.consumer.ConsumerRecord;
2523
import org.apache.kafka.clients.consumer.ConsumerRecords;
@@ -54,19 +52,21 @@ private KafkaUtil() {}
5452
* levels with the ones used by the capturing logger.
5553
*
5654
* @param dockerImageVersion describing the Kafka image
57-
* @param logger to derive the log level from
5855
* @return configured Kafka container
5956
*/
60-
public static KafkaContainer createKafkaContainer(String dockerImageVersion, Logger logger) {
61-
return createKafkaContainer(dockerImageVersion, logger, null);
57+
public static KafkaContainer createKafkaContainer(String dockerImageVersion) {
58+
return createKafkaContainer(dockerImageVersion, "Kafka");
6259
}
6360

6461
/**
6562
* This method helps to set commonly used Kafka configurations and aligns the internal Kafka log
6663
* levels with the ones used by the capturing logger, and set the prefix of logger.
6764
*/
6865
public static KafkaContainer createKafkaContainer(
69-
String dockerImageVersion, Logger logger, String loggerPrefix) {
66+
String dockerImageVersion, String containerName) {
67+
68+
Logger logger = LoggerFactory.getLogger("container." + containerName);
69+
7070
String logLevel;
7171
if (logger.isTraceEnabled()) {
7272
logLevel = "TRACE";
@@ -82,10 +82,7 @@ public static KafkaContainer createKafkaContainer(
8282
logLevel = "OFF";
8383
}
8484

85-
Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(logger);
86-
if (!StringUtils.isNullOrWhitespaceOnly(loggerPrefix)) {
87-
logConsumer.withPrefix(loggerPrefix);
88-
}
85+
Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(logger, true);
8986
return new KafkaContainer(DockerImageName.parse(dockerImageVersion))
9087
.withEnv("KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR", "1")
9188
.withEnv("KAFKA_TRANSACTION_STATE_LOG_MIN_ISR", "1")

flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducerMigrationTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ protected Properties createProperties() {
5454
Properties properties = new Properties();
5555
properties.putAll(standardProps);
5656
properties.putAll(secureProps);
57-
properties.put(ProducerConfig.CLIENT_ID_CONFIG, "producer-client-id");
5857
properties.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "producer-transaction-id");
5958
properties.put(FlinkKafkaProducer.KEY_DISABLE_METRICS, "true");
6059
return properties;

flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/KafkaTestEnvironmentImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ private KafkaContainer createKafkaContainer(
434434
int brokerID, @Nullable GenericContainer<?> zookeeper) {
435435
String brokerName = String.format("Kafka-%d", brokerID);
436436
KafkaContainer broker =
437-
KafkaUtil.createKafkaContainer(DockerImageVersions.KAFKA, LOG, brokerName)
437+
KafkaUtil.createKafkaContainer(DockerImageVersions.KAFKA, brokerName)
438438
.withNetworkAliases(brokerName)
439439
.withEnv("KAFKA_BROKER_ID", String.valueOf(brokerID))
440440
.withEnv("KAFKA_MESSAGE_MAX_BYTES", String.valueOf(50 * 1024 * 1024))

flink-connector-kafka/src/test/java/org/apache/flink/streaming/connectors/kafka/internals/metrics/KafkaMetricMutableWrapperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class KafkaMetricMutableWrapperTest {
5555

5656
@Container
5757
public static final KafkaContainer KAFKA_CONTAINER =
58-
createKafkaContainer(KAFKA, LOG)
58+
createKafkaContainer(KAFKA)
5959
.withEmbeddedZookeeper()
6060
.withNetwork(NETWORK)
6161
.withNetworkAliases(INTER_CONTAINER_KAFKA_ALIAS);

flink-connector-kafka/src/test/resources/log4j2-test.properties

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,15 @@ logger.zookeeper.level = OFF
3737
logger.I0Itec.name = org.I0Itec
3838
logger.I0Itec.level = OFF
3939

40-
logger.splitreader.name = org.apache.flink.connector.kafka.source.reader.KafkaPartitionSplitReader
41-
logger.splitreader.level = DEBUG
40+
# Logger configuration for containers, by default this is off
41+
# If you want to investigate test failures, overwrite the level as above
42+
logger.containerlogger.name = container
43+
logger.containerlogger.level = OFF
44+
logger.containerlogger.additivity = false # This prevents messages from being logged by the root logger
45+
logger.containerlogger.appenderRef.containerappender.ref = ContainerLogger
46+
47+
appender.containerappender.name = ContainerLogger
48+
appender.containerappender.type = CONSOLE
49+
appender.containerappender.target = SYSTEM_ERR
50+
appender.containerappender.layout.type = PatternLayout
51+
appender.containerappender.layout.pattern = [%c{1}] %m%n

0 commit comments

Comments
 (0)