From 49b7a18b458636d73729307f2a5f6c4b6fe99ece Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Mon, 8 Jun 2020 22:24:46 +0200 Subject: [PATCH] diagnostics: CollectZippedLogsAction: expose logs archive creation + allow to add more files Reuse logs zipping in other places like code with me, marked as internal GitOrigin-RevId: d5da8b6ff39a093181ac6bcd61c73689a3bfeb84 --- .../ide/actions/CollectZippedLogsAction.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/actions/CollectZippedLogsAction.java b/platform/platform-impl/src/com/intellij/ide/actions/CollectZippedLogsAction.java index be8360c5a4cf..beacd0c3a2dd 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/CollectZippedLogsAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/CollectZippedLogsAction.java @@ -20,6 +20,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.troubleshooting.TroubleInfoCollector; import com.intellij.util.SystemProperties; import com.intellij.util.io.Compressor; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,6 +29,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.function.Consumer; public class CollectZippedLogsAction extends AnAction implements DumbAware { private static final String CONFIRMATION_DIALOG = "zipped.logs.action.show.confirmation.dialog"; @@ -58,10 +60,7 @@ public class CollectZippedLogsAction extends AnAction implements DumbAware { } ProgressManager.getInstance().runProcessWithProgressSynchronously(() -> { try { - PerformanceWatcher.getInstance().dumpThreads("", false); - - final StringBuilder troubleshooting = collectInfoFromExtensions(project); - final File zippedLogsFile = createZip(troubleshooting); + final File zippedLogsFile = createZip(project, compressor -> {}); if (RevealFileAction.isSupported()) { RevealFileAction.openFile(zippedLogsFile); } @@ -86,13 +85,22 @@ public class CollectZippedLogsAction extends AnAction implements DumbAware { } @NotNull - private static File createZip(@Nullable StringBuilder troubleshooting) throws IOException { + @ApiStatus.Internal + public static File createZip(@Nullable Project project, + @NotNull Consumer<@NotNull Compressor> additionalFiles) throws IOException { + PerformanceWatcher.getInstance().dumpThreads("", false); + String productName = StringUtil.toLowerCase(ApplicationNamesInfo.getInstance().getLowercaseProductName()); File zippedLogsFile = FileUtil.createTempFile(productName + "-logs-" + getDate(), ".zip"); try (Compressor zip = new Compressor.Zip(zippedLogsFile)) { + // Add additional files before logs folder to collect any logging + // happened in additionalFiles.accept + additionalFiles.accept(zip); + zip.addDirectory(new File(PathManager.getLogPath())); + StringBuilder troubleshooting = collectInfoFromExtensions(project); if (troubleshooting != null) { zip.addFile("troubleshooting.txt", troubleshooting.toString().getBytes(StandardCharsets.UTF_8)); }