class Fluent::Supervisor::LoggerInitializer
Public Class Methods
new(path, level, chuser, chgroup, opts, log_rotate_age: nil, log_rotate_size: nil)
click to toggle source
# File lib/fluent/supervisor.rb, line 518 def initialize(path, level, chuser, chgroup, opts, log_rotate_age: nil, log_rotate_size: nil) @path = path @level = level @chuser = chuser @chgroup = chgroup @opts = opts @log_rotate_age = log_rotate_age @log_rotate_size = log_rotate_size end
per_process_path(path, process_type, worker_id)
click to toggle source
Create a unique path for each process.
>>> per_process_path(:worker, 1, “C:/tmp/test.log”) C:/tmp/test-1.log >>> per_process_path(:supervisor, 0, “C:/tmp/test.log”) C:/tmp/test-supervisor-0.log
# File lib/fluent/supervisor.rb, line 534 def self.per_process_path(path, process_type, worker_id) path = Pathname(path) ext = path.extname if process_type == :supervisor suffix = "-#{process_type}-0#{ext}" # "-0" for backword compatibility. else suffix = "-#{worker_id}#{ext}" end return path.sub_ext(suffix).to_s end
Public Instance Methods
apply_options(format: nil, time_format: nil, log_dir_perm: nil, ignore_repeated_log_interval: nil, ignore_same_log_interval: nil)
click to toggle source
# File lib/fluent/supervisor.rb, line 600 def apply_options(format: nil, time_format: nil, log_dir_perm: nil, ignore_repeated_log_interval: nil, ignore_same_log_interval: nil) $log.format = format if format $log.time_format = time_format if time_format $log.ignore_repeated_log_interval = ignore_repeated_log_interval if ignore_repeated_log_interval $log.ignore_same_log_interval = ignore_same_log_interval if ignore_same_log_interval if @path && log_dir_perm File.chmod(log_dir_perm || Fluent::DEFAULT_DIR_PERMISSION, File.dirname(@path)) end end
init(process_type, worker_id)
click to toggle source
# File lib/fluent/supervisor.rb, line 546 def init(process_type, worker_id) @opts[:process_type] = process_type @opts[:worker_id] = worker_id if @path && @path != "-" unless File.exist?(@path) FileUtils.mkdir_p(File.dirname(@path)) end if @log_rotate_age || @log_rotate_size # We need to prepare a unique path for each worker since # Windows locks files. if Fluent.windows? path = LoggerInitializer.per_process_path(@path, process_type, worker_id) else path = @path end @logdev = Fluent::LogDeviceIO.new(path, shift_age: @log_rotate_age, shift_size: @log_rotate_size) else @logdev = File.open(@path, "a") end if @chuser || @chgroup chuid = @chuser ? ServerEngine::Privilege.get_etc_passwd(@chuser).uid : nil chgid = @chgroup ? ServerEngine::Privilege.get_etc_group(@chgroup).gid : nil File.chown(chuid, chgid, @path) end else @logdev = STDOUT end dl_opts = {} # subtract 1 to match serverengine daemon logger side logging severity. dl_opts[:log_level] = @level - 1 dl_opts[:log_rotate_age] = @log_rotate_age if @log_rotate_age dl_opts[:log_rotate_size] = @log_rotate_size if @log_rotate_size logger = ServerEngine::DaemonLogger.new(@logdev, dl_opts) $log = Fluent::Log.new(logger, @opts) $log.enable_color(false) if @path $log.enable_debug if @level <= Fluent::Log::LEVEL_DEBUG $log.info "init #{process_type} logger", path: path, rotate_age: @log_rotate_age, rotate_size: @log_rotate_size end
level=(level)
click to toggle source
# File lib/fluent/supervisor.rb, line 611 def level=(level) @level = level $log.level = level end
reopen!()
click to toggle source
# File lib/fluent/supervisor.rb, line 593 def reopen! if @path && @path != "-" @logdev.reopen(@path, "a") end self end
stdout?()
click to toggle source
# File lib/fluent/supervisor.rb, line 589 def stdout? @logdev == STDOUT end