You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2019/04/08 21:43:51 UTC
[geode] branch develop updated: GEODE-6602: gfsh commands should be
logged in locator log (#3414)
This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new a1d6da3 GEODE-6602: gfsh commands should be logged in locator log (#3414)
a1d6da3 is described below
commit a1d6da3f2a939a6ab55541e33d5245153d979379
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Mon Apr 8 14:43:40 2019 -0700
GEODE-6602: gfsh commands should be logged in locator log (#3414)
---
.../cli/commands/GfshCommandIntegrationTest.java | 33 ++++++++++++++++++++++
.../internal/cli/remote/CommandExecutor.java | 6 ++++
2 files changed, 39 insertions(+)
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/commands/GfshCommandIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/commands/GfshCommandIntegrationTest.java
index b5429f7..a7248cf 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/commands/GfshCommandIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/commands/GfshCommandIntegrationTest.java
@@ -15,11 +15,20 @@
package org.apache.geode.management.internal.cli.commands;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.test.appender.ListAppender;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.apache.geode.management.internal.cli.remote.CommandExecutor;
import org.apache.geode.test.junit.categories.GfshTest;
import org.apache.geode.test.junit.rules.GfshCommandRule;
import org.apache.geode.test.junit.rules.LocatorStarterRule;
@@ -42,4 +51,28 @@ public class GfshCommandIntegrationTest {
gfsh.connectAndVerify(locator);
gfsh.executeAndAssertThat("abc").statusIsError().containsOutput("Command 'abc' not found");
}
+
+ @Test
+ public void commandsAreLoggedAndRedacted() {
+ Logger logger = (Logger) LogManager.getLogger(CommandExecutor.class);
+ ListAppender listAppender = new ListAppender("ListAppender");
+ logger.addAppender(listAppender);
+ listAppender.start();
+
+ gfsh.executeAndAssertThat(
+ "start locator --properties-file=unknown --J=-Dgemfire.security-password=bob")
+ .statusIsError();
+ gfsh.executeAndAssertThat("connect --password=secret").statusIsError();
+
+ List<LogEvent> logEvents = listAppender.getEvents();
+ assertThat(logEvents.size()).as("There should be exactly 2 log events").isEqualTo(2);
+
+ String logMessage = logEvents.get(0).getMessage().getFormattedMessage();
+ assertThat(logEvents.get(0).getMessage().getFormattedMessage()).isEqualTo(
+ "Executing command: start locator --properties-file=unknown --J=-Dgemfire.security-password=********");
+ assertThat(logEvents.get(1).getMessage().getFormattedMessage())
+ .isEqualTo("Executing command: connect --password=********");
+
+ logger.removeAppender(listAppender);
+ }
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java
index d9e223b..5ed084a 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/remote/CommandExecutor.java
@@ -27,6 +27,7 @@ import org.springframework.util.ReflectionUtils;
import org.apache.geode.SystemFailure;
import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.util.ArgumentRedactor;
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.cli.SingleGfshCommand;
import org.apache.geode.management.cli.UpdateAllConfigurationGroupsMarker;
@@ -59,6 +60,11 @@ public class CommandExecutor {
// used by the GfshParserRule to pass in a mock command
public Object execute(Object command, GfshParseResult parseResult) {
+ String userInput = parseResult.getUserInput();
+ if (userInput != null) {
+ logger.info("Executing command: " + ArgumentRedactor.redact(userInput));
+ }
+
try {
Object result = invokeCommand(command, parseResult);