From 31566110b1ef7d7b79d3c8b6fb2390da0668af9a Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 12 Apr 2022 10:53:04 +0200 Subject: [PATCH 1/2] add fallback when log not writeable due to SM --- .../logging/Log4j2ConfigurationFactory.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/logging/Log4j2ConfigurationFactory.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/logging/Log4j2ConfigurationFactory.java index a253ae1f85..4de4e781ae 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/logging/Log4j2ConfigurationFactory.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/logging/Log4j2ConfigurationFactory.java @@ -91,12 +91,20 @@ static String getActualLogFile(@Nullable String agentHome, String logFile) { logFile = logFile.replace(AGENT_HOME_PLACEHOLDER, agentHome); } } - logFile = new File(logFile).getAbsolutePath(); - final File logDir = new File(logFile).getParentFile(); - if (!logDir.exists()) { - logDir.mkdirs(); + + boolean canWrite; + try { + logFile = new File(logFile).getAbsolutePath(); + final File logDir = new File(logFile).getParentFile(); + if (!logDir.exists()) { + logDir.mkdirs(); + } + canWrite = logDir.canWrite(); + } catch (SecurityException e) { + canWrite = false; } - if (!logDir.canWrite()) { + + if(!canWrite){ System.err.println("[elastic-apm-agent] WARN Log file " + logFile + " is not writable. Falling back to System.out."); return SYSTEM_OUT; } From 9aee23a37408fdc0c202b74809864fcce3a31ea3 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Mon, 25 Apr 2022 11:48:11 +0200 Subject: [PATCH 2/2] update changelog --- CHANGELOG.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index b5b42ada13..681b64debc 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -32,7 +32,7 @@ endif::[] [float] ===== Bug fixes - +* Fallback to standard output when Security Manager prevents writing to log file - {pull}2581[#2581] [[release-notes-1.x]] === Java Agent version 1.x