Class: Fluent::Plugin::SetTimezoneFilter

Inherits:
Filter
  • Object
show all
Defined in:
lib/fluent/plugin/filter_set_timezone.rb

Instance Method Summary collapse

Instance Method Details

#configure(conf) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/fluent/plugin/filter_set_timezone.rb', line 13

def configure(conf)
  super
  if !@timezone_key
    raise Fluent::ConfigError, "timezone_key is required"
  end
  @accessor = record_accessor_create(@timezone_key)
end

#filter_with_time(tag, event_time, record) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fluent/plugin/filter_set_timezone.rb', line 21

def filter_with_time(tag, event_time, record)
  timezone = @accessor.call(record)
  return event_time, record unless timezone and !timezone.empty?
  time = event_time.to_time.utc
  begin
    tz = TZInfo::Timezone.get(timezone)
    adjusted = tz.local_time(time.year, time.month, time.day, time.hour, time.min, time.sec, Rational(time.nsec, 1000000000))
  rescue TZInfo::InvalidTimezoneIdentifier
    offset = Time.zone_offset(timezone)
    raise "Unable to parse timezone '#{timezone}'" unless !offset.nil?
    adjusted = time - offset
  end

  return Fluent::EventTime.from_time(adjusted), record
end