diff --git a/platform/ui.jcef/jcef/JBCefApp.java b/platform/ui.jcef/jcef/JBCefApp.java index 9eb573f81e1d..c3faa9e016fa 100644 --- a/platform/ui.jcef/jcef/JBCefApp.java +++ b/platform/ui.jcef/jcef/JBCefApp.java @@ -168,6 +168,8 @@ public final class JBCefApp { } else { CefSettings settings = Cancellation.forceNonCancellableSectionInClassInitializer(() -> SettingsHelper.loadSettings(config)); + final String logPath = SettingsHelper.getLogPath(); + CefLog.init(logPath, settings.log_severity); JBCefHealthMonitor.getInstance().performHealthCheckAsync(settings, () -> { CefApp.startup(ArrayUtil.EMPTY_STRING_ARRAY); @@ -182,8 +184,8 @@ public final class JBCefApp { // Init verbose chromium logging to stderr via 'vmodule' (to decrease output size) args = ArrayUtil.mergeArrays(args, "--enable-logging=stderr", "--vmodule=statistics_recorder*=0", "--v=1"); } - if (settings.log_severity != CefSettings.LogSeverity.LOGSEVERITY_DISABLE || settings.log_file != null) - LOG.info(String.format("JCEF logging: level=%s, file=%s", settings.log_severity, settings.log_file)); + if (settings.log_severity != CefSettings.LogSeverity.LOGSEVERITY_DISABLE || settings.log_file != null || logPath != null) + LOG.info(String.format("JCEF logging: level=%s, file=%s, chromium_log=%s", settings.log_severity, logPath, settings.log_file)); myCefArgs = args; CefApp.addAppHandler(new MyCefAppHandler(args, trackGPUCrashes.get())); diff --git a/platform/ui.jcef/jcef/SettingsHelper.java b/platform/ui.jcef/jcef/SettingsHelper.java index 747f2ba67d2d..e2b937e0deb3 100644 --- a/platform/ui.jcef/jcef/SettingsHelper.java +++ b/platform/ui.jcef/jcef/SettingsHelper.java @@ -56,7 +56,7 @@ final class SettingsHelper { CefSettings settings = config.getCefSettings(); settings.windowless_rendering_enabled = isOffScreenRenderingModeEnabled(); settings.log_severity = getLogLevel(); - settings.log_file = getLogPath(); + settings.log_file = getChromiumLogPath(); //todo[tav] IDEA-260446 & IDEA-260344 However, without proper background the CEF component flashes white in dark themes //settings.background_color = settings.new ColorType(bg.getAlpha(), bg.getRed(), bg.getGreen(), bg.getBlue()); @@ -239,7 +239,7 @@ final class SettingsHelper { case "warning" -> CefSettings.LogSeverity.LOGSEVERITY_WARNING; case "error" -> CefSettings.LogSeverity.LOGSEVERITY_ERROR; case "fatal" -> CefSettings.LogSeverity.LOGSEVERITY_FATAL; - default -> CefSettings.LogSeverity.LOGSEVERITY_DEFAULT; + default -> CefSettings.LogSeverity.LOGSEVERITY_DISABLE; }; } @@ -257,7 +257,13 @@ final class SettingsHelper { final String def = PathManager.getLogPath() + Platform.current().fileSeparator + "jcef_" + ProcessHandle.current().pid() + ".log"; final String result = Utils.getString("ide.browser.jcef.log.path", def).trim(); - return result.isEmpty() || result.equals("null") ? null : result; + return result.isEmpty() || result.equals("null") || result.equals("stderr") ? null : result; + } + + static String getChromiumLogPath() { + final String def = PathManager.getLogPath() + Platform.current().fileSeparator + "jcef_chromium_" + ProcessHandle.current().pid() + ".log"; + final String result = Utils.getString("ide.browser.jcef.log_chromium.path", def).trim(); + return result.isEmpty() || result.equals("null") || result.equals("stderr") ? null : result; } private static @Nullable String readLinuxDistributionFromOsRelease() {