From a71c3abef64158d0d3be4602bb6d1a95cad5007e Mon Sep 17 00:00:00 2001 From: Alan Lau Date: Thu, 22 Aug 2019 10:03:54 +0800 Subject: [PATCH] Add cached writer. (#3287) * Add cached writer so we need not call whole method. * Make writer volatile. * Make writer to WRITER. * Rewrite the writeFactory for add the cached writer and keep the unit tests stable. * Give the default writer. * Remove volatile. --- .../core/logging/core/WriterFactory.java | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactory.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactory.java index 8c9a619ffa..95db3dd70c 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactory.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/logging/core/WriterFactory.java @@ -25,23 +25,37 @@ import org.apache.skywalking.apm.agent.core.conf.Config; import org.apache.skywalking.apm.agent.core.conf.SnifferConfigInitializer; import org.apache.skywalking.apm.util.StringUtil; +/** + * @author Alan Lau + */ public class WriterFactory { + + private static IWriter WRITER; + public static IWriter getLogWriter() { - if (!useConsole() && SnifferConfigInitializer.isInitCompleted() && AgentPackagePath.isPathFound()) { - if (StringUtil.isEmpty(Config.Logging.DIR)) { - try { - Config.Logging.DIR = AgentPackagePath.getPath() + "/logs"; - } catch (AgentPackageNotFoundException e) { - e.printStackTrace(); + + switch (Config.Logging.OUTPUT) { + case FILE: + if (WRITER != null) { + return WRITER; } - } - return FileWriter.get(); - } else { - return SystemOutWriter.INSTANCE; - } - } + if (SnifferConfigInitializer.isInitCompleted() && AgentPackagePath.isPathFound()) { + if (StringUtil.isEmpty(Config.Logging.DIR)) { + try { + Config.Logging.DIR = AgentPackagePath.getPath() + "/logs"; + } catch (AgentPackageNotFoundException e) { + e.printStackTrace(); + } + } + WRITER = FileWriter.get(); + } else { + return SystemOutWriter.INSTANCE; + } + break; + default: + return SystemOutWriter.INSTANCE; - private static boolean useConsole() { - return LogOutput.CONSOLE == Config.Logging.OUTPUT; + } + return WRITER; } } -- GitLab