NAME Log::Message::Structured - Simple structured log messages SYNOPSIS package MyLogEvent; use Moose; use namespace::autoclean; # Note: you MUST implement a 'stringify' method, or compose a role # that gives you a stringify method. with qw/ Log::Message::Structured Log::Message::Structured::Stringify::AsJSON /; has foo => ( is => 'ro', required => 1 ); ... elsewhere ... use aliased 'My::Log::Event'; $logger->log(message => Event->new( foo => "bar" )); # Logs: {"__CLASS__":"MyLogEvent","foo":1,"date":"2010-03-28T23:15:52Z","hostname":"mymachine.domain"} DESCRIPTION Logging lines to a file is a fairly useful and traditional way of recording what's going on in your application. However, if you have another use for the same sort of data (for example, sending to another process via a message queue, or storing in KiokuDB), then you can be needlessly repeating your data marshalling. Log::Message::Structured is a VERY VERY SIMPLE set of roles to help you make small structured classes which represent '"something which happened"', that you can then either pass around in your application, log in a traditional manor as a log line, or serialize to JSON for transmission over the network. ATTRIBUTES The basic Log::Message::Structured role provides the following read only attributes: hostname The host name of the host the event was generated on. Defaults to the hostname as returned by Sys::Hostname. date The date and time on which the event occured, as an ISO8601 date time string (from MooseX::Types::ISO8601). Defaults to the time the object is constructed. METHODS The only non-accessor methods provided are those composed from MooseX::Storage related to serialization and deserialization. freeze Return the instance as a JSON string. thaw Inflate an instance of the class from a JSON string. pack Return the instance data as a plain data structure (hashref). pack Inflate an instance from a plain data structure (hashref). REQUIRED METHODS stringify You must implement a stringify method, or compose a stringification role for all Log::Message::Structured events. This is so that events will always be meaningfully loggable be printing them to STDOUT or STDERR, or logging them in a traditional way in a file. AUTHOR AND COPYRIGHT Tomas Doran (t0m) "". LICENSE Licensed under the same terms as perl itself.