Skip to content

Commit c552b5e

Browse files
Merge pull request #174 from AikidoSec/fix-crash-on-aikido-log-level-not-recognized
Fix: stops crashing when AIKIDO_LOG_LEVEL is set to something invalid
2 parents 0dd1342 + fc67065 commit c552b5e

2 files changed

Lines changed: 34 additions & 6 deletions

File tree

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,23 @@
88
import java.util.List;
99

1010
public class Logger {
11-
private final LogLevel logLevel;
11+
private LogLevel logLevel;
1212
private final Class<?> logClass;
1313
private static final int MAX_ARGUMENT_LENGTH = 300;
14+
private static final LogLevel DEFAULT_LOG_LEVEL = LogLevel.INFO;
1415

1516
public Logger(Class<?> logClass) {
17+
this.logLevel = DEFAULT_LOG_LEVEL;
18+
this.logClass = logClass;
19+
1620
String logLevelString = System.getenv("AIKIDO_LOG_LEVEL");
1721
if (logLevelString != null) {
18-
this.logLevel = LogLevel.valueOf(logLevelString.toUpperCase());
19-
} else {
20-
this.logLevel = LogLevel.INFO; // Default loglevel
22+
try {
23+
this.logLevel = LogLevel.valueOf(logLevelString.toUpperCase());
24+
} catch (IllegalArgumentException ignored) {
25+
this.error("Unknown log level `%s`", logLevelString);
26+
}
2127
}
22-
this.logClass = logClass;
2328
}
2429
public Logger(Class<?> logClass, LogLevel logLevel) {
2530
this.logLevel = logLevel;
@@ -101,4 +106,4 @@ public void error(Object message, Object... args) {
101106
public void fatal(Object message, Object... args) {
102107
log(LogLevel.FATAL, message, args);
103108
}
104-
}
109+
}

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,29 @@ public void testLoggerUsesProvidedLevel1(StdOut out) {
105105
assertFalse(out.capturedString().contains("TEST2"));
106106
assertFalse(out.capturedString().contains("TEST3"));
107107
}
108+
109+
@Test
110+
@SetEnvironmentVariable(key = "AIKIDO_LOG_LEVEL", value = "ekjflos")
111+
@StdIo
112+
public void testLoggerUsesProvidedLevel1GivenInvalidEnv(StdOut out) {
113+
// Check it reads environment variable
114+
Logger logger = new Logger(FileCollector.class);
115+
logger.info("TEST1");
116+
logger.trace("TEST2");
117+
logger.debug("TEST3");
118+
logger.error("TEST4");
119+
logger.fatal("TEST5");
120+
logger.warn("TEST6");
121+
122+
assertTrue(out.capturedString().contains("INFO dev.aikido.agent_api.collectors.FileCollector: TEST1"));
123+
assertTrue(out.capturedString().contains("ERROR dev.aikido.agent_api.collectors.FileCollector: TEST4"));
124+
assertTrue(out.capturedString().contains("FATAL dev.aikido.agent_api.collectors.FileCollector: TEST5"));
125+
assertTrue(out.capturedString().contains("WARN dev.aikido.agent_api.collectors.FileCollector: TEST6"));
126+
assertFalse(out.capturedString().contains("TEST2"));
127+
assertFalse(out.capturedString().contains("TEST3"));
128+
assertTrue(out.capturedString().contains("Unknown log level `ekjflos`"));
129+
}
130+
108131
@Test
109132
@StdIo
110133
public void testLoggerUsesProvidedLevel2(StdOut out) {

0 commit comments

Comments
 (0)