lib/timber/contexts/system.rb in timber-2.5.1 vs lib/timber/contexts/system.rb in timber-2.6.0.pre.beta1
- old
+ new
@@ -6,21 +6,31 @@
# The system context tracks OS level process information, such as the process ID.
#
# @note This is tracked automatically in {CurrentContext}. When the current context
# is initialized, the system context gets added automatically.
class System < Context
+ HOSTNAME_MAX_BYTES = 256.freeze
+
@keyspace = :system
attr_reader :hostname, :pid
def initialize(attributes)
- @hostname = attributes[:hostname]
- @pid = Timber::Util::Object.try(attributes[:pid], :to_i)
+ normalizer = Util::AttributeNormalizer.new(attributes)
+ @hostname = normalizer.fetch(:hostname, :string, :limit => HOSTNAME_MAX_BYTES)
+ @pid = normalizer.fetch(:pid, :integer)
end
# Builds a hash representation containing simple objects, suitable for serialization (JSON).
+ def to_hash
+ @to_hash ||= Util::NonNilHashBuilder.build do |h|
+ h.add(:hostname, hostname)
+ h.add(:pid, pid)
+ end
+ end
+
def as_json(_options = {})
- {hostname: hostname, pid: pid}
+ to_hash
end
end
end
end
\ No newline at end of file