Skip to content

Commit 38611d5

Browse files
Merge pull request #175 from AikidoSec/recognize-aikido-debug-env
Allow setting log level to debug via AIKIDO_DEBUG
2 parents 613af34 + 359623d commit 38611d5

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

agent_api/src/main/java/dev/aikido/agent_api/helpers/logging/Logger.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.aikido.agent_api.helpers.logging;
22

3+
import dev.aikido.agent_api.helpers.env.BooleanEnv;
4+
35
import java.time.LocalDateTime;
46
import java.time.format.DateTimeFormatter;
57
import java.util.ArrayList;
@@ -17,6 +19,7 @@ public Logger(Class<?> logClass) {
1719
this.logLevel = DEFAULT_LOG_LEVEL;
1820
this.logClass = logClass;
1921

22+
// We first check "AIKIDO_LOG_LEVEL", because "AIKIDO_DEBUG" takes precedent.
2023
String logLevelString = System.getenv("AIKIDO_LOG_LEVEL");
2124
if (logLevelString != null) {
2225
try {
@@ -25,6 +28,11 @@ public Logger(Class<?> logClass) {
2528
this.error("Unknown log level `%s`", logLevelString);
2629
}
2730
}
31+
// "AIKIDO_DEBUG"
32+
BooleanEnv aikidoDebug = new BooleanEnv("AIKIDO_DEBUG", false);
33+
if (aikidoDebug.getValue()) {
34+
this.logLevel = LogLevel.TRACE;
35+
}
2836
}
2937
public Logger(Class<?> logClass, LogLevel logLevel) {
3038
this.logLevel = logLevel;

agent_api/src/test/java/helpers/LoggingTest.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import dev.aikido.agent_api.helpers.logging.Logger;
77
import org.junit.jupiter.api.BeforeEach;
88
import org.junit.jupiter.api.Test;
9+
import org.junitpioneer.jupiter.ClearEnvironmentVariable;
910
import org.junitpioneer.jupiter.SetEnvironmentVariable;
1011
import org.junitpioneer.jupiter.StdIo;
1112
import org.junitpioneer.jupiter.StdOut;
@@ -65,8 +66,75 @@ public void testLoggerReadsEnv1(StdOut out) {
6566
assertFalse(out.capturedString().contains("TEST2"));
6667
assertFalse(out.capturedString().contains("TEST3"));
6768
}
69+
70+
@Test
71+
@SetEnvironmentVariable(key = "AIKIDO_LOG_LEVEL", value = "debug")
72+
@StdIo
73+
public void testLoggerIsDebug(StdOut out) {
74+
// Check it reads environment variable
75+
Logger logger = new Logger(FileCollector.class);
76+
logger.info("TEST1");
77+
logger.trace("TEST2");
78+
logger.debug("TEST3");
79+
logger.error("TEST4");
80+
logger.fatal("TEST5");
81+
logger.warn("TEST6");
82+
83+
assertTrue(out.capturedString().contains("INFO dev.aikido.agent_api.collectors.FileCollector: TEST1"));
84+
assertTrue(out.capturedString().contains("ERROR dev.aikido.agent_api.collectors.FileCollector: TEST4"));
85+
assertTrue(out.capturedString().contains("FATAL dev.aikido.agent_api.collectors.FileCollector: TEST5"));
86+
assertTrue(out.capturedString().contains("WARN dev.aikido.agent_api.collectors.FileCollector: TEST6"));
87+
assertFalse(out.capturedString().contains("TEST2"));
88+
assertTrue(out.capturedString().contains("TEST3"));
89+
}
90+
91+
@Test
92+
@SetEnvironmentVariable(key = "AIKIDO_DEBUG", value = "true")
93+
@ClearEnvironmentVariable(key = "AIKIDO_LOG_LEVEL")
94+
@StdIo
95+
public void testLoggerIsAikidoDebug(StdOut out) {
96+
// Check it reads environment variable
97+
Logger logger = new Logger(FileCollector.class);
98+
logger.info("TEST1");
99+
logger.trace("TEST2");
100+
logger.debug("TEST3");
101+
logger.error("TEST4");
102+
logger.fatal("TEST5");
103+
logger.warn("TEST6");
104+
105+
assertTrue(out.capturedString().contains("INFO dev.aikido.agent_api.collectors.FileCollector: TEST1"));
106+
assertTrue(out.capturedString().contains("ERROR dev.aikido.agent_api.collectors.FileCollector: TEST4"));
107+
assertTrue(out.capturedString().contains("FATAL dev.aikido.agent_api.collectors.FileCollector: TEST5"));
108+
assertTrue(out.capturedString().contains("WARN dev.aikido.agent_api.collectors.FileCollector: TEST6"));
109+
assertTrue(out.capturedString().contains("TEST2"));
110+
assertTrue(out.capturedString().contains("TEST3"));
111+
}
112+
113+
@Test
114+
@SetEnvironmentVariable(key = "AIKIDO_LOG_LEVEL", value = "error")
115+
@SetEnvironmentVariable(key = "AIKIDO_DEBUG", value = "true")
116+
@StdIo
117+
public void testDebugEnvTakesPrecedent(StdOut out) {
118+
// Check it reads environment variable
119+
Logger logger = new Logger(FileCollector.class);
120+
logger.info("TEST1");
121+
logger.trace("TEST2");
122+
logger.debug("TEST3");
123+
logger.error("TEST4");
124+
logger.fatal("TEST5");
125+
logger.warn("TEST6");
126+
127+
assertTrue(out.capturedString().contains("INFO dev.aikido.agent_api.collectors.FileCollector: TEST1"));
128+
assertTrue(out.capturedString().contains("ERROR dev.aikido.agent_api.collectors.FileCollector: TEST4"));
129+
assertTrue(out.capturedString().contains("FATAL dev.aikido.agent_api.collectors.FileCollector: TEST5"));
130+
assertTrue(out.capturedString().contains("WARN dev.aikido.agent_api.collectors.FileCollector: TEST6"));
131+
assertTrue(out.capturedString().contains("TEST2"));
132+
assertTrue(out.capturedString().contains("TEST3"));
133+
}
134+
68135
@Test
69136
@SetEnvironmentVariable(key = "AIKIDO_LOG_LEVEL", value = "fatal")
137+
@ClearEnvironmentVariable(key = "AIKIDO_DEBUG")
70138
@StdIo
71139
public void testLoggerReadsEnv2(StdOut out) {
72140
// Check it reads environment variable

0 commit comments

Comments
 (0)