diff --git a/src/io/flutter/FlutterUtils.java b/src/io/flutter/FlutterUtils.java
index 54ea361af..0c68d7064 100644
--- a/src/io/flutter/FlutterUtils.java
+++ b/src/io/flutter/FlutterUtils.java
@@ -111,22 +111,30 @@ public static boolean isAndroidStudio() {
}
}
- public static void info(@NotNull Logger logger, @NotNull String message, @NotNull Exception e, boolean sanitizePaths) {
+ public static void info(@NotNull Logger logger, @NotNull String message, @NotNull Throwable t, boolean sanitizePaths) {
if (sanitizePaths && FlutterSettings.getInstance().isFilePathLoggingEnabled()) {
- logger.info(message, e);
+ logger.info(message, t);
} else {
logger.info(message);
}
}
- public static void warn(@NotNull Logger logger, @NotNull String message, @NotNull Exception e, boolean sanitizePaths) {
+ public static void warn(@NotNull Logger logger, @NotNull String message, @NotNull Throwable t, boolean sanitizePaths) {
if (sanitizePaths && FlutterSettings.getInstance().isFilePathLoggingEnabled()) {
- logger.warn(message, e);
+ logger.warn(message, t);
} else {
logger.warn(message);
}
}
+ public static void error(@NotNull Logger logger, @NotNull String message, @NotNull Throwable t, boolean sanitizePaths) {
+ if (sanitizePaths && FlutterSettings.getInstance().isFilePathLoggingEnabled()) {
+ logger.error(message, t);
+ } else {
+ logger.error(message);
+ }
+ }
+
/**
* Write a warning message to the IntelliJ log.
*
diff --git a/src/io/flutter/run/FlutterDebugProcess.java b/src/io/flutter/run/FlutterDebugProcess.java
index 8a6b72a22..574eab06f 100644
--- a/src/io/flutter/run/FlutterDebugProcess.java
+++ b/src/io/flutter/run/FlutterDebugProcess.java
@@ -23,6 +23,7 @@
import io.flutter.actions.ReloadFlutterApp;
import io.flutter.actions.RestartAllFlutterApps;
import io.flutter.actions.RestartFlutterApp;
+import io.flutter.logging.PluginLogger;
import io.flutter.run.common.RunMode;
import io.flutter.run.daemon.FlutterApp;
import io.flutter.view.FlutterViewMessages;
@@ -42,7 +43,7 @@
* when not debugging in order to support hot reload.)
*/
public class FlutterDebugProcess extends DartVmServiceDebugProcess {
- private static final @NotNull Logger LOG = Logger.getInstance(FlutterDebugProcess.class);
+ private static final @NotNull Logger LOG = PluginLogger.createLogger(FlutterDebugProcess.class);
private final @NotNull FlutterApp app;
@@ -141,7 +142,7 @@ private static void suppressDebugViews(@Nullable RunnerLayoutUi ui) {
}
}
catch (ProcessCanceledException e) {
- FlutterUtils.warn(LOG, "Failed to suppress debug views", e, true);
+ FlutterUtils.warn(LOG, "ProcessCanceledException in suppressDebugViews", e, true);
throw e;
}
}
diff --git a/src/io/flutter/run/FlutterPositionMapper.java b/src/io/flutter/run/FlutterPositionMapper.java
index 5e90102e5..35193bef2 100644
--- a/src/io/flutter/run/FlutterPositionMapper.java
+++ b/src/io/flutter/run/FlutterPositionMapper.java
@@ -22,6 +22,7 @@
import com.jetbrains.lang.dart.util.DartUrlResolver;
import io.flutter.FlutterUtils;
import io.flutter.dart.DartPlugin;
+import io.flutter.logging.PluginLogger;
import io.flutter.utils.OpenApiUtils;
import io.flutter.vmService.DartVmServiceDebugProcess;
import org.dartlang.vm.service.element.LibraryRef;
@@ -40,7 +41,7 @@
* Used when setting breakpoints, stepping through code, and so on while debugging.
*/
public class FlutterPositionMapper implements DartVmServiceDebugProcess.PositionMapper {
- private static final @NotNull Logger LOG = Logger.getInstance(FlutterPositionMapper.class);
+ private static final @NotNull Logger LOG = PluginLogger.createLogger(FlutterPositionMapper.class);
/**
* This Project can't be non-null as we set it to null {@link #shutdown()} so the Project isn't held onto.
@@ -257,7 +258,7 @@ private XSourcePosition getSourcePosition(@NotNull final String isolateId, @NotN
private XSourcePosition getSourcePosition(@NotNull final String isolateId, @NotNull final String scriptId,
@NotNull final String scriptUri, int tokenPos, CompletableFuture fileFuture) {
if (scriptProvider == null) {
- FlutterUtils.warn(LOG, "attempted to get source position before connected to observatory");
+ LOG.warn("attempted to get source position before connected to observatory");
return null;
}
@@ -379,13 +380,13 @@ static Analyzer create(@NotNull Project project, @NotNull VirtualFile sourceLoca
}
if (!dartAnalysisServerService.serverReadyForRequest()) {
- FlutterUtils.warn(LOG, "Dart analysis server is not running. Some breakpoints may not work.");
+ LOG.warn("Dart analysis server is not running. Some breakpoints may not work.");
return null;
}
final String contextId = dartAnalysisServerService.execution_createContext(sourceLocation.getPath());
if (contextId == null) {
- FlutterUtils.warn(LOG, "Failed to get execution context from analysis server. Some breakpoints may not work.");
+ LOG.warn("Failed to get execution context from analysis server. Some breakpoints may not work.");
return null;
}
diff --git a/src/io/flutter/run/FlutterReloadManager.java b/src/io/flutter/run/FlutterReloadManager.java
index e1e2521d6..75bbeb7f0 100644
--- a/src/io/flutter/run/FlutterReloadManager.java
+++ b/src/io/flutter/run/FlutterReloadManager.java
@@ -55,6 +55,7 @@
import io.flutter.bazel.Workspace;
import io.flutter.bazel.WorkspaceCache;
import io.flutter.dart.FlutterDartAnalysisServer;
+import io.flutter.logging.PluginLogger;
import io.flutter.run.common.RunMode;
import io.flutter.run.daemon.FlutterApp;
import io.flutter.settings.FlutterSettings;
@@ -74,7 +75,7 @@
* Handle the mechanics of performing a hot reload on file save.
*/
public class FlutterReloadManager {
- private static final @NotNull Logger LOG = Logger.getInstance(FlutterReloadManager.class);
+ private static final @NotNull Logger LOG = PluginLogger.createLogger(FlutterReloadManager.class);
private static final Map toolWindowNotificationGroups = new HashMap<>();
@@ -142,7 +143,7 @@ public void beforeActionPerformed(@NotNull AnAction action, @NotNull AnActionEve
}
catch (Throwable t) {
// A catch-all, so any exceptions don't bubble through to the users.
- LOG.warn("Exception from FlutterReloadManager", t);
+ FlutterUtils.warn(LOG, "Exception from FlutterReloadManager", t, true);
}
}
@@ -161,7 +162,7 @@ public void afterActionPerformed(@NotNull AnAction action, @NotNull AnActionEven
handleSaveAllNotification(eventEditor);
}
catch (Throwable t) {
- FlutterUtils.warn(LOG, "Exception from hot reload on save", t);
+ FlutterUtils.warn(LOG, "Exception from hot reload on save", t, true);
}
finally {
// Context: "Released EditorImpl held by lambda in FlutterReloadManager" (https://github.com/flutter/flutter-intellij/issues/7507)
@@ -325,7 +326,7 @@ private void syncFiles() {
}
}
catch (ExecutionException | InterruptedException e) {
- LOG.error("Unable to sync files: " + e);
+ FlutterUtils.error(LOG, "Unable to sync files", e, true);
}
}
diff --git a/src/io/flutter/run/OpenDevToolsAction.java b/src/io/flutter/run/OpenDevToolsAction.java
index 843c84d7a..5a2aeb2ab 100644
--- a/src/io/flutter/run/OpenDevToolsAction.java
+++ b/src/io/flutter/run/OpenDevToolsAction.java
@@ -13,13 +13,16 @@
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Computable;
import icons.FlutterIcons;
+import io.flutter.FlutterUtils;
import io.flutter.ObservatoryConnector;
import io.flutter.bazel.WorkspaceCache;
import io.flutter.devtools.DevToolsIdeFeature;
import io.flutter.devtools.DevToolsUrl;
+import io.flutter.logging.PluginLogger;
import io.flutter.run.daemon.DevToolsService;
import io.flutter.run.daemon.FlutterApp;
import io.flutter.sdk.FlutterSdk;
+import io.flutter.settings.FlutterSettings;
import io.flutter.utils.AsyncUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -27,7 +30,7 @@
import java.util.Objects;
public class OpenDevToolsAction extends DumbAwareAction {
- private static final @NotNull Logger LOG = Logger.getInstance(OpenDevToolsAction.class);
+ private static final @NotNull Logger LOG = PluginLogger.createLogger(OpenDevToolsAction.class);
private static final String title = "Open Flutter DevTools in Browser";
private final @Nullable ObservatoryConnector myConnector;
private final Computable myIsApplicable;
@@ -76,7 +79,7 @@ public void actionPerformed(@NotNull final AnActionEvent event) {
}
if (ex != null) {
- LOG.error(ex);
+ FlutterUtils.error(LOG, "Exception in getDevToolsInstance", ex, true);
return;
}
diff --git a/src/io/flutter/run/SdkRunConfig.java b/src/io/flutter/run/SdkRunConfig.java
index d311d120b..9e26f5f5d 100644
--- a/src/io/flutter/run/SdkRunConfig.java
+++ b/src/io/flutter/run/SdkRunConfig.java
@@ -40,9 +40,11 @@
import io.flutter.FlutterUtils;
import io.flutter.console.FlutterConsoleFilter;
import io.flutter.dart.FlutterDartAnalysisServer;
+import io.flutter.logging.PluginLogger;
import io.flutter.run.common.RunMode;
import io.flutter.run.daemon.FlutterApp;
import io.flutter.sdk.FlutterSdkManager;
+import io.flutter.settings.FlutterSettings;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -59,7 +61,7 @@
public class SdkRunConfig extends LocatableConfigurationBase
implements LaunchState.RunConfig, RefactoringListenerProvider, RunConfigurationWithSuppressedDefaultRunAction {
- private static final @NotNull Logger LOG = Logger.getInstance(SdkRunConfig.class);
+ private static final @NotNull Logger LOG = PluginLogger.createLogger(SdkRunConfig.class);
private boolean firstRun = true;
private @NotNull SdkFields fields = new SdkFields();
@@ -117,7 +119,7 @@ public static class RecursiveDeleter extends SimpleFileVisitor {
@Override
public @NotNull FileVisitResult visitFileFailed(@NotNull Path file, @NotNull IOException exc) {
- FlutterUtils.warn(LOG, "Unable to visit file", exc, true);
+ FlutterUtils.warn(LOG, "Unable to visit file in RecursiveDeleter", exc, true);
return CONTINUE;
}
}
@@ -165,7 +167,8 @@ public LaunchState getState(@NotNull Executor executor, @NotNull ExecutionEnviro
existingJson = Files.readString(cachedParametersPath);
}
catch (IOException e) {
- FlutterUtils.warn(LOG, "Unable to get existing json from " + cachedParametersPath);
+ LOG.warn("Unable to get existing json from " +
+ (FlutterSettings.getInstance().isFilePathLoggingEnabled() ? cachedParametersPath : cachedParametersPath.getFileName()));
}
}
if (!StringUtil.equals(json, existingJson)) {