Skip to content

Commit 356b4f8

Browse files
author
William Armiros
committed
added mechanism to set log group via env var
1 parent d242a93 commit 356b4f8

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorderBuilder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.amazonaws.xray.contexts.SegmentContextResolverChain;
1919
import com.amazonaws.xray.emitters.Emitter;
2020
import com.amazonaws.xray.entities.AWSLogReference;
21+
import com.amazonaws.xray.entities.StringValidator;
2122
import com.amazonaws.xray.listeners.SegmentListener;
2223
import com.amazonaws.xray.plugins.EC2Plugin;
2324
import com.amazonaws.xray.plugins.ECSPlugin;
@@ -50,6 +51,7 @@ public class AWSXRayRecorderBuilder {
5051
LogFactory.getLog(AWSXRayRecorderBuilder.class);
5152

5253
private static final Map<String, Integer> ORIGIN_PRIORITY;
54+
private static final String LOG_GROUP_KEY = "AWS_LOG_GROUP";
5355

5456
static {
5557
HashMap<String, Integer> originPriority = new HashMap<>();
@@ -351,6 +353,16 @@ public AWSXRayRecorder build() {
351353
}
352354
});
353355

356+
String logGroupFromEnv = System.getenv(LOG_GROUP_KEY);
357+
if (StringValidator.isNotNullOrBlank(logGroupFromEnv)) {
358+
logger.info("Recording log group " + logGroupFromEnv + " from environment variable.");
359+
AWSLogReference logReference = new AWSLogReference();
360+
logReference.setLogGroup(logGroupFromEnv);
361+
Set<AWSLogReference> logReferences = new HashSet<>();
362+
logReferences.add(logReference);
363+
client.addAllLogReferences(logReferences);
364+
}
365+
354366
return client;
355367
}
356368
}

aws-xray-recorder-sdk-core/src/test/java/com/amazonaws/xray/AWSXRayRecorderTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.amazonaws.xray.contexts.LambdaSegmentContextResolver;
2525
import com.amazonaws.xray.contexts.SegmentContextResolverChain;
2626
import com.amazonaws.xray.emitters.Emitter;
27+
import com.amazonaws.xray.entities.AWSLogReference;
2728
import com.amazonaws.xray.entities.Segment;
2829
import com.amazonaws.xray.entities.Subsegment;
2930
import com.amazonaws.xray.entities.TraceHeader;
@@ -51,6 +52,7 @@
5152
import java.util.HashSet;
5253
import java.util.List;
5354
import java.util.Map;
55+
import java.util.Set;
5456
import java.util.concurrent.ExecutorService;
5557
import java.util.concurrent.Executors;
5658
import java.util.concurrent.locks.ReentrantLock;
@@ -917,6 +919,18 @@ public void testBeginSegmentWithForcedSampling() {
917919

918920
segment.setUser("user");
919921
assertThat(segment.getUser()).isEqualTo("user"); // Loose way to test that segment is real
922+
}
923+
924+
@Test
925+
public void testLogGroupFromEnvironment() {
926+
environmentVariables.set("AWS_LOG_GROUP", "my-group");
927+
AWSXRayRecorder recorder = AWSXRayRecorderBuilder.standard().build();
928+
Segment segment = recorder.beginSegment("test");
929+
AWSLogReference expected = new AWSLogReference();
930+
expected.setLogGroup("my-group");
920931

932+
assertThat(segment.getAws()).containsKey("cloudwatch_logs");
933+
Set<AWSLogReference> logReferences = (Set<AWSLogReference>) segment.getAws().get("cloudwatch_logs");
934+
assertThat(logReferences).containsOnly(expected);
921935
}
922936
}

0 commit comments

Comments
 (0)