From be4f1e3350d7104b241f092a5e4b551c4ea0c890 Mon Sep 17 00:00:00 2001 From: Alan Guo Xiang Tan Date: Wed, 12 Jun 2024 13:34:07 +0800 Subject: [PATCH] PERF: Cache `hostname` in `DiscourseLogstashLogger` (#27442) Logging events happen all the time. No need for us to keep running code to fetch the hostname when it doesn't change between deploys. --- lib/discourse_logstash_logger.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/discourse_logstash_logger.rb b/lib/discourse_logstash_logger.rb index 15225d33849..0e8b824464f 100644 --- a/lib/discourse_logstash_logger.rb +++ b/lib/discourse_logstash_logger.rb @@ -3,21 +3,22 @@ require "logstash-logger" class DiscourseLogstashLogger - def self.logger(uri:, type:) - # See Discourse.os_hostname - hostname = + def self.hostname + @hostname ||= begin require "socket" Socket.gethostname rescue => e `hostname`.chomp end + end + def self.logger(uri:, type:) LogStashLogger.new( uri: uri, sync: true, customize_event: ->(event) do - event["hostname"] = hostname + event["hostname"] = self.hostname event["severity_name"] = event["severity"] event["severity"] = Object.const_get("Logger::Severity::#{event["severity"]}") event["type"] = type