From 93d6ec2939e34c2137e532d054d03c37e384c639 Mon Sep 17 00:00:00 2001 From: Alejandro Huertas Date: Mon, 9 May 2022 13:17:44 +0200 Subject: [PATCH] F #1149: make log output configurable (cherry picked from commit 8b37678ad287dede28723220f9193bf74a684cbe) --- src/flow/lib/log.rb | 35 ++++++++++++++++++++++----------- src/flow/oneflow-server.rb | 16 +++++++++++++-- src/onegate/onegate-server.rb | 14 ++++++++++++- src/sunstone/sunstone-server.rb | 15 ++++++++++++-- 4 files changed, 63 insertions(+), 17 deletions(-) diff --git a/src/flow/lib/log.rb b/src/flow/lib/log.rb index b1c75f9aad..b44f8ba2d4 100644 --- a/src/flow/lib/log.rb +++ b/src/flow/lib/log.rb @@ -53,6 +53,15 @@ class Log @@logger = logger end + # Sets the logger type + # @param type [String] + # + # - file: log into log files + # - syslog: log into syslog + def type=(type) + @@type = type + end + # Sets the log level # @param [Integer] log_level (0:ERROR, 1:WARN, 2:INFO, 3:DEBUG) def level=(log_level) @@ -135,23 +144,25 @@ class Log end begin - msg = format(MSG_FORMAT, - Time.now.strftime(DATE_FORMAT), - Logger::SEV_LABEL[severity][0..0], - component, - message) + file = "#{LOG_LOCATION}/oneflow/#{service_id}.log" + msg = format( + MSG_FORMAT, + Time.now.strftime(DATE_FORMAT), + Logger::SEV_LABEL[severity][0..0], + component, + message + ) - File.open("#{LOG_LOCATION}/oneflow/#{service_id}.log", - 'a') do |f| - f << msg + case @@type + when 'syslog' + @@logger.info(msg) + else + File.open(file, 'a') {|f| f << msg } end rescue Errno::ENOENT FileUtils.mkdir("#{LOG_LOCATION}/oneflow/") - File.open("#{LOG_LOCATION}/oneflow/#{service_id}.log", - 'a') do |f| - f << msg - end + File.open(file, 'a') {|f| f << msg } rescue StandardError => e message = 'Could not log into ' \ "#{LOG_LOCATION}/oneflow/#{service_id}.log: " \ diff --git a/src/flow/oneflow-server.rb b/src/flow/oneflow-server.rb index f0e64602c5..28bb1eb330 100644 --- a/src/flow/oneflow-server.rb +++ b/src/flow/oneflow-server.rb @@ -70,6 +70,7 @@ require 'CloudServer' require 'models' require 'log' +require 'syslog/logger' require 'LifeCycleManager' require 'EventManager' @@ -87,7 +88,12 @@ rescue StandardError => e exit 1 end -conf[:debug_level] ||= 2 +if conf[:log] + conf[:debug_level] = conf[:log][:level] || 2 +else + conf[:debug_level] ||= 2 +end + conf[:autoscaler_interval] ||= 90 conf[:default_cooldown] ||= 300 conf[:shutdown_action] ||= 'terminate' @@ -107,7 +113,13 @@ set :config, conf include CloudLogger # rubocop:enable Style/MixinUsage -logger = enable_logging ONEFLOW_LOG, conf[:debug_level].to_i +if conf[:log] && conf[:log][:system] == 'syslog' + logger = Syslog::Logger.new('oneflow') + Log.type = 'syslog' +else + logger = enable_logging ONEFLOW_LOG, conf[:debug_level].to_i + Log.type = 'file' +end use Rack::Session::Pool, :key => 'oneflow' diff --git a/src/onegate/onegate-server.rb b/src/onegate/onegate-server.rb index c07e6db0e7..d0637e0209 100644 --- a/src/onegate/onegate-server.rb +++ b/src/onegate/onegate-server.rb @@ -65,6 +65,7 @@ require 'sinatra' require 'yaml' require 'json' require 'set' +require 'syslog/logger' require 'CloudAuth' require 'CloudServer' @@ -111,7 +112,18 @@ set :port, $conf[:port] set :config, $conf include CloudLogger -logger = enable_logging(ONEGATE_LOG, $conf[:debug_level].to_i) + +if $conf[:log] + $conf[:debug_level] = $conf[:log][:level] || 2 +else + $conf[:debug_level] ||= 2 +end + +if $conf[:log] && $conf[:log][:system] == 'syslog' + logger = Syslog::Logger.new('onegate') +else + logger = enable_logging(ONEGATE_LOG, $conf[:debug_level].to_i) +end begin ENV["ONE_CIPHER_AUTH"] = ONEGATE_AUTH diff --git a/src/sunstone/sunstone-server.rb b/src/sunstone/sunstone-server.rb index 470ccd5d4f..e6458239a9 100755 --- a/src/sunstone/sunstone-server.rb +++ b/src/sunstone/sunstone-server.rb @@ -135,6 +135,7 @@ require 'base64' require 'rexml/document' require 'uri' require 'open3' +require 'syslog/logger' require "sunstone_qr_code" require "sunstone_optp" @@ -171,7 +172,6 @@ if $conf[:one_xmlrpc_timeout] ENV['ONE_XMLRPC_TIMEOUT'] = $conf[:one_xmlrpc_timeout].to_s unless ENV['ONE_XMLRPC_TIMEOUT'] end -$conf[:debug_level] ||= 3 $conf[:webauthn_avail] = webauthn_avail # Set Sunstone Session Timeout @@ -246,7 +246,18 @@ use Rack::Deflater # Enable logger include CloudLogger -logger=enable_logging(SUNSTONE_LOG, $conf[:debug_level].to_i) + +if $conf[:log] + $conf[:debug_level] = $conf[:log][:level] || 3 +else + $conf[:debug_level] ||= 3 +end + +if $conf[:log] && $conf[:log][:system] == 'syslog' + logger = Syslog::Logger.new('onegate') +else + logger = enable_logging(SUNSTONE_LOG, $conf[:debug_level].to_i) +end begin ENV["ONE_CIPHER_AUTH"] = SUNSTONE_AUTH