Skip to content

Commit

Permalink
prototype for capturing log messages regardless of logging configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
karottenreibe committed May 14, 2024
1 parent 3527a04 commit 17aad90
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 0 deletions.
4 changes: 4 additions & 0 deletions agent/src/main/java/com/teamscale/jacoco/agent/PreMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.teamscale.jacoco.agent.util.DebugLogDirectoryPropertyDefiner;
import com.teamscale.jacoco.agent.util.LogDirectoryPropertyDefiner;
import com.teamscale.jacoco.agent.util.LoggingUtils;
import com.teamscale.jacoco.agent.util.TeamscaleLogAppender;
import org.conqat.lib.commons.collections.CollectionUtils;
import org.conqat.lib.commons.filesystem.FileSystemUtils;
import org.conqat.lib.commons.string.StringUtils;
Expand Down Expand Up @@ -104,9 +105,11 @@ private static AgentOptions getAndApplyAgentOptions(String options, String envir
}

TeamscaleCredentials credentials = TeamscalePropertiesUtils.parseCredentials();
TeamscaleLogAppender.start(credentials);
if (credentials == null) {
delayedLogger.warn("Did not find a teamscale.properties file!");
}

AgentOptions agentOptions;
try {
agentOptions = AgentOptionsParser.parse(options, environmentConfigId, environmentConfigFile, credentials, delayedLogger);
Expand All @@ -129,6 +132,7 @@ private static AgentOptions getAndApplyAgentOptions(String options, String envir
initializeLogging(agentOptions, delayedLogger);
Logger logger = LoggingUtils.getLogger(Agent.class);
delayedLogger.logTo(logger);

HttpUtils.setShouldValidateSsl(agentOptions.shouldValidateSsl());
return agentOptions;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ private static void reconfigureLoggerContext(InputStream stream) {
configurator.setContext(loggerContext);
loggerContext.reset();
configurator.doConfigure(stream);

InputStream remoteLoggingStream = Agent.class.getResourceAsStream("logback-remote-logging.xml");
configurator.doConfigure(remoteLoggingStream);
} catch (JoranException je) {
// StatusPrinter will handle this
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.teamscale.jacoco.agent.util;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import com.teamscale.jacoco.agent.options.TeamscaleCredentials;

Check failure on line 5 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L5

Type depends on `com.teamscale.jacoco.agent.options.TeamscaleCredentials`. This violates the architecture specification in `teamscale-jacoco-agent.architecture` https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=D82C0E5CC251629D6757420E552B78A1

public class TeamscaleLogAppender extends AppenderBase<ILoggingEvent> {

Check warning on line 7 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L7

Interface comment missing https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=7A4006ECF02B19336DE144E075A29E14

public static void start(TeamscaleCredentials credentials) {

Check warning on line 9 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L9

Interface comment missing https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=7BBEC3E4B3C27F7B1E0E803028C578BE

Check failure on line 9 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L9

Type depends on `com.teamscale.jacoco.agent.options.TeamscaleCredentials`. This violates the architecture specification in `teamscale-jacoco-agent.architecture` https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=D82C0E5CC251629D6757420E552B78A1
TeamscaleLogAppender.credentials = credentials;
if (credentials == null) {
enabled = false;
// TODO (FS) cancel any background threads and clear any buffered messages

Check warning on line 13 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L13

TODO (FS) cancel any background threads and clear any buffered messages https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=FC7D3763E7D6F280E772288D71FFD29E
}
}

private static TeamscaleCredentials credentials = null;

Check warning on line 17 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L17

Private field `credentials` is never read https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=CD1C22B56DED048DB216E112616CFD0E

Check failure on line 17 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L17

Type depends on `com.teamscale.jacoco.agent.options.TeamscaleCredentials`. This violates the architecture specification in `teamscale-jacoco-agent.architecture` https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=D82C0E5CC251629D6757420E552B78A1
private static boolean enabled = true;

@Override
protected void append(ILoggingEvent eventObject) {
if (!enabled) {
return;
}
// TODO (FS) buffer and send events to Teamscale asynchronously

Check warning on line 25 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L25

TODO (FS) buffer and send events to Teamscale asynchronously https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=D4FB2B993358AC9C43D676D487D58988
// TODO (FS) log messages may arrive before credentials are set. buffer in this case until either disabled() or credentials are available

Check warning on line 26 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L26

TODO (FS) log messages may arrive before credentials are set. buffer in this case until either disabled() or credentials are available https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=EC3B0C1E19C803DBE4CA94062F97181D
System.err.println(

Check warning on line 27 in agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java

View check run for this annotation

cqse.teamscale.io / teamscale-findings

agent/src/main/java/com/teamscale/jacoco/agent/util/TeamscaleLogAppender.java#L27

Method `System.err.println` should not be called https://cqse.teamscale.io/findings.html#details/teamscale-jacoco-agent?t=ts%2F31571_send_logs_to_teamscale%3AHEAD&id=FE0BF61DE087082959696E0BA8268B7D
"----> event: " + eventObject.getTimeStamp() + " " + eventObject.getLevel() + " " + eventObject.getLoggerName() + " " + eventObject.getFormattedMessage());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This configuration can be run after any other configuration to add the TeamscaleLogAppender. -->
<configuration>
<appender name="Teamscale" class="com.teamscale.jacoco.agent.util.TeamscaleLogAppender">
</appender>

<root>
<appender-ref ref="Teamscale"/>
</root>
</configuration>

0 comments on commit 17aad90

Please sign in to comment.