From 3fc2fa95fcf837879a379e910b82bb6ec0928a2f Mon Sep 17 00:00:00 2001 From: Helin Shiah Date: Fri, 12 Sep 2025 12:10:48 -0700 Subject: [PATCH 1/2] Log a message without exception for no file paths --- src/io/flutter/FlutterUtils.java | 10 +++------- src/io/flutter/editor/FlutterColors.java | 2 +- src/io/flutter/editor/FlutterCupertinoColors.java | 2 +- src/io/flutter/editor/FlutterCupertinoIcons.java | 2 +- src/io/flutter/editor/FlutterMaterialIcons.java | 2 +- src/io/flutter/module/FlutterModuleBuilder.java | 2 +- src/io/flutter/run/FlutterDebugProcess.java | 2 +- src/io/flutter/run/LaunchState.java | 2 +- src/io/flutter/run/SdkFields.java | 2 +- src/io/flutter/run/SdkRunConfig.java | 6 +++--- src/io/flutter/run/daemon/DeviceDaemon.java | 2 +- src/io/flutter/sdk/FlutterSdk.java | 2 +- src/io/flutter/utils/IconPreviewGenerator.java | 4 ++-- 13 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/io/flutter/FlutterUtils.java b/src/io/flutter/FlutterUtils.java index 766f8dda5b..baf51bd6dd 100644 --- a/src/io/flutter/FlutterUtils.java +++ b/src/io/flutter/FlutterUtils.java @@ -123,15 +123,11 @@ public static void info(@NotNull Logger logger, @NotNull Exception e, boolean sa } } - public static void warn(@NotNull Logger logger, @NotNull Exception e) { - warn(logger, e, false); - } - - public static void warn(@NotNull Logger logger, @NotNull Exception e, boolean sanitizePaths) { + public static void warn(@NotNull Logger logger, @NotNull String message, @NotNull Exception e, boolean sanitizePaths) { if (sanitizePaths && FlutterSettings.getInstance().isFilePathLoggingEnabled()) { - logger.warn(e); + logger.warn(message, e); } else { - logger.warn(e.toString()); + logger.warn(message); } } diff --git a/src/io/flutter/editor/FlutterColors.java b/src/io/flutter/editor/FlutterColors.java index ddf79513c8..7877c3898e 100644 --- a/src/io/flutter/editor/FlutterColors.java +++ b/src/io/flutter/editor/FlutterColors.java @@ -53,7 +53,7 @@ public boolean isPrimary() { colors.load(FlutterUtils.class.getResourceAsStream("/flutter/colors/material.properties")); } catch (IOException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Failed to load colors", e, true); } colorToName = new HashMap<>(); diff --git a/src/io/flutter/editor/FlutterCupertinoColors.java b/src/io/flutter/editor/FlutterCupertinoColors.java index 693ae4fa34..4cd87f7066 100644 --- a/src/io/flutter/editor/FlutterCupertinoColors.java +++ b/src/io/flutter/editor/FlutterCupertinoColors.java @@ -31,7 +31,7 @@ public class FlutterCupertinoColors { colors.load(FlutterUtils.class.getResourceAsStream("/flutter/colors/cupertino.properties")); } catch (IOException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Failed to load Cupertino colors", e, true); } colorToName = new HashMap<>(); diff --git a/src/io/flutter/editor/FlutterCupertinoIcons.java b/src/io/flutter/editor/FlutterCupertinoIcons.java index 2f1180e6d9..ee4d059515 100644 --- a/src/io/flutter/editor/FlutterCupertinoIcons.java +++ b/src/io/flutter/editor/FlutterCupertinoIcons.java @@ -27,7 +27,7 @@ public class FlutterCupertinoIcons { icons.load(FlutterCupertinoIcons.class.getResourceAsStream("/flutter/icons/cupertino.properties")); } catch (IOException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Failed to load cupertino icons", e, true); } } diff --git a/src/io/flutter/editor/FlutterMaterialIcons.java b/src/io/flutter/editor/FlutterMaterialIcons.java index 80f05d23ab..64d20d9596 100644 --- a/src/io/flutter/editor/FlutterMaterialIcons.java +++ b/src/io/flutter/editor/FlutterMaterialIcons.java @@ -27,7 +27,7 @@ public class FlutterMaterialIcons { icons.load(FlutterMaterialIcons.class.getResourceAsStream("/flutter/icons/material.properties")); } catch (IOException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Failed to load material icons", e, true); } } diff --git a/src/io/flutter/module/FlutterModuleBuilder.java b/src/io/flutter/module/FlutterModuleBuilder.java index d1362898ea..20827cbe04 100644 --- a/src/io/flutter/module/FlutterModuleBuilder.java +++ b/src/io/flutter/module/FlutterModuleBuilder.java @@ -223,7 +223,7 @@ public static void addAndroidModuleFromFile(@NotNull Project project, } } catch (ModuleWithNameAlreadyExists | IOException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Failed to add Android module", e, true); } } diff --git a/src/io/flutter/run/FlutterDebugProcess.java b/src/io/flutter/run/FlutterDebugProcess.java index e688ba36b1..8a6b72a224 100644 --- a/src/io/flutter/run/FlutterDebugProcess.java +++ b/src/io/flutter/run/FlutterDebugProcess.java @@ -141,7 +141,7 @@ private static void suppressDebugViews(@Nullable RunnerLayoutUi ui) { } } catch (ProcessCanceledException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Failed to suppress debug views", e, true); throw e; } } diff --git a/src/io/flutter/run/LaunchState.java b/src/io/flutter/run/LaunchState.java index e94766035e..2e40eb725e 100644 --- a/src/io/flutter/run/LaunchState.java +++ b/src/io/flutter/run/LaunchState.java @@ -402,7 +402,7 @@ protected RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNul app.shutdownAsync().get(); } catch (InterruptedException | java.util.concurrent.ExecutionException e) { - FlutterUtils.warn(LOG, e, true); + FlutterUtils.warn(LOG, "Error while shutting down app", e, true); } return launchState.launch(env); } diff --git a/src/io/flutter/run/SdkFields.java b/src/io/flutter/run/SdkFields.java index d7465402f4..c32d4adfcb 100644 --- a/src/io/flutter/run/SdkFields.java +++ b/src/io/flutter/run/SdkFields.java @@ -233,7 +233,7 @@ public GeneralCommandLine createFlutterSdkRunCommand( args = ArrayUtil.append(args, "--devtools-server-address=http://" + instance.host() + ":" + instance.port()); } catch (Exception e) { - FlutterUtils.warn(LOG, e, true); + FlutterUtils.warn(LOG, "Error while starting DevTools", e, true); } command = flutterSdk.flutterRun(root, main.getFile(), device, runMode, flutterLaunchMode, project, args); final GeneralCommandLine commandLine = command.createGeneralCommandLine(project); diff --git a/src/io/flutter/run/SdkRunConfig.java b/src/io/flutter/run/SdkRunConfig.java index 773449efc5..d311d120bb 100644 --- a/src/io/flutter/run/SdkRunConfig.java +++ b/src/io/flutter/run/SdkRunConfig.java @@ -103,7 +103,7 @@ public static class RecursiveDeleter extends SimpleFileVisitor { Files.delete(file); } catch (IOException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Unable to delete file: " + name, e, true); // TODO(jacobr): consider aborting. } } @@ -117,7 +117,7 @@ public static class RecursiveDeleter extends SimpleFileVisitor { @Override public @NotNull FileVisitResult visitFileFailed(@NotNull Path file, @NotNull IOException exc) { - FlutterUtils.warn(LOG, exc); + FlutterUtils.warn(LOG, "Unable to visit file", exc, true); return CONTINUE; } } @@ -187,7 +187,7 @@ public LaunchState getState(@NotNull Executor executor, @NotNull ExecutionEnviro Files.writeString(cachedParametersPath, json); } catch (IOException e) { - FlutterUtils.warn(LOG, e); + FlutterUtils.warn(LOG, "Unable to delete dill or write params", e, true); } } diff --git a/src/io/flutter/run/daemon/DeviceDaemon.java b/src/io/flutter/run/daemon/DeviceDaemon.java index 3720455282..ba14e1b222 100644 --- a/src/io/flutter/run/daemon/DeviceDaemon.java +++ b/src/io/flutter/run/daemon/DeviceDaemon.java @@ -275,7 +275,7 @@ else if (attempts == DeviceDaemon.RESTART_ATTEMPTS_BEFORE_WARNING + 4) { } catch (java.util.concurrent.ExecutionException e) { // This is not a user facing crash - we log (and no devices will be discovered). - FlutterUtils.warn(LOG, e, true); + FlutterUtils.warn(LOG, "Error while starting device daemon", e, true); } } } diff --git a/src/io/flutter/sdk/FlutterSdk.java b/src/io/flutter/sdk/FlutterSdk.java index 70072412f0..7a539e4f5d 100644 --- a/src/io/flutter/sdk/FlutterSdk.java +++ b/src/io/flutter/sdk/FlutterSdk.java @@ -444,7 +444,7 @@ public PubRoot createFiles(@NotNull VirtualFile baseDir, @Nullable Module module } } catch (InterruptedException e) { - FlutterUtils.warn(LOG, e, true); + FlutterUtils.warn(LOG, "Interruption while waiting for createFiles", e, true); return null; } diff --git a/src/io/flutter/utils/IconPreviewGenerator.java b/src/io/flutter/utils/IconPreviewGenerator.java index 669135751e..e3c3081aac 100644 --- a/src/io/flutter/utils/IconPreviewGenerator.java +++ b/src/io/flutter/utils/IconPreviewGenerator.java @@ -94,7 +94,7 @@ public void batchConvert(@NotNull String outPath, @NotNull String path, @NotNull } } catch (IOException ex) { - FlutterUtils.warn(LOG, ex); + FlutterUtils.warn(LOG, "Unable to batch convert icons", ex, true); } return null; }); @@ -114,7 +114,7 @@ private Icon runInGraphicsContext(TripleFunction Date: Fri, 12 Sep 2025 12:18:04 -0700 Subject: [PATCH 2/2] Fix existing info method as well --- src/io/flutter/FlutterUtils.java | 10 +++------- src/io/flutter/run/LaunchState.java | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/io/flutter/FlutterUtils.java b/src/io/flutter/FlutterUtils.java index baf51bd6dd..54ea361af1 100644 --- a/src/io/flutter/FlutterUtils.java +++ b/src/io/flutter/FlutterUtils.java @@ -111,15 +111,11 @@ public static boolean isAndroidStudio() { } } - public static void info(@NotNull Logger logger, @NotNull Exception e) { - info(logger, e, false); - } - - public static void info(@NotNull Logger logger, @NotNull Exception e, boolean sanitizePaths) { + public static void info(@NotNull Logger logger, @NotNull String message, @NotNull Exception e, boolean sanitizePaths) { if (sanitizePaths && FlutterSettings.getInstance().isFilePathLoggingEnabled()) { - logger.info(e); + logger.info(message, e); } else { - logger.info(e.toString()); + logger.info(message); } } diff --git a/src/io/flutter/run/LaunchState.java b/src/io/flutter/run/LaunchState.java index 2e40eb725e..2eea40dd18 100644 --- a/src/io/flutter/run/LaunchState.java +++ b/src/io/flutter/run/LaunchState.java @@ -181,7 +181,7 @@ protected RunContentDescriptor launch(@NotNull ExecutionEnvironment env) throws } } catch (IllegalAccessException | InvocationTargetException | NoSuchFieldException | NoSuchMethodException e) { - FlutterUtils.info(LOG, e, true); + FlutterUtils.info(LOG, "Error setting display name", e, true); } return descriptor;