class
Logit::Event::Attributes
- Logit::Event::Attributes
- Reference
- Object
Overview
Type-safe structured attribute storage for log events.
Attributes provide a way to attach arbitrary structured data to log
events. Values are stored as JSON::Any for flexibility while maintaining
type safety through the setter methods.
Setting Attributes
Use the type-specific #set methods for primitive types:
attrs = Logit::Event::Attributes.new
# Primitive types
attrs.set("user.name", "alice")
attrs.set("user.age", 30_i64)
attrs.set("request.latency", 0.042)
attrs.set("user.active", true)
Use #set_object and #set_array for complex structures:
attrs.set_object("user", name: "alice", role: "admin")
attrs.set_array("tags", "production", "critical")
Use #set_any for any JSON-serializable type:
attrs.set_any("config", my_config_object)
Getting Attributes
if value = attrs.get("user.name")
puts value.as_s # => "alice"
end
Defined in:
logit/events/attributes.crConstructors
-
.new
Creates a new empty Attributes instance.
Instance Method Summary
-
#get(key : String) : JSON::Any | Nil
Gets an attribute value, returning nil if not found or if the value is null.
-
#get?(key : String) : JSON::Any | Nil
Alias for
#get. -
#set(key : String, value : String) : Nil
Sets a string attribute.
-
#set(key : String, value : Int32 | Int64) : Nil
Sets an integer attribute.
-
#set(key : String, value : Float32 | Float64) : Nil
Sets a float attribute.
-
#set(key : String, value : Bool) : Nil
Sets a boolean attribute.
-
#set(key : String, value : Nil) : Nil
Sets a nil attribute.
-
#set(key : String, value : Array(JSON::Any)) : Nil
Sets an array attribute.
-
#set(key : String, value : Hash(String, JSON::Any)) : Nil
Sets a hash attribute.
-
#set_any(key : String, value : _) : Nil
Sets an attribute from any JSON-serializable value.
-
#set_array(key : String, *values) : Nil
Sets an array attribute from variadic arguments.
-
#set_object(key : String, **values) : Nil
Sets a nested object attribute from named arguments.
- #to_json(json : JSON::Builder) : Nil
- #to_json : String
-
#values : Hash(String, JSON::Any)
The underlying attribute storage.
-
#values=(values : Hash(String, JSON::Any))
The underlying attribute storage.
Constructor Detail
Instance Method Detail
Gets an attribute value, returning nil if not found or if the value is null.
Sets an attribute from any JSON-serializable value.
Use this for custom types that implement #to_json.
Sets an array attribute from variadic arguments.
attrs.set_array("tags", "web", "api", "v2")
# Results in: {"tags": ["web", "api", "v2"]}
Sets a nested object attribute from named arguments.
attrs.set_object("http", method: "POST", status: 200)
# Results in: {"http": {"method": "POST", "status": 200}}