NAME FlightRecorder - Structured Logging ABSTRACT Logging for Distributed Systems SYNOPSIS package main; use FlightRecorder; my $f = FlightRecorder->new( auto => undef ); # $f->begin('try'); # $f->debug('something happened'); # $f->end; DESCRIPTION This package provides a simple mechanism for logging events with context, serializing and distributing the event logs, and producing a transcript of activity to provide insight into the behavior of distributed systems. INTEGRATES This package integrates behaviors from: Data::Object::Role::Pluggable Data::Object::Role::Throwable LIBRARIES This package uses type constraints from: Types::Standard ATTRIBUTES This package has the following attributes: auto auto(Maybe[FileHandle]) This attribute is read-only, accepts (Maybe[FileHandle]) values, and is optional. format format(Str) This attribute is read-write, accepts (Str) values, and is optional. head head(Str) This attribute is read-only, accepts (Str) values, and is optional. item item(HashRef) This attribute is read-only, accepts (HashRef) values, and is optional. level level(Enum[qw(debug info warn error fatal)]) This attribute is read-only, accepts (Enum[qw(debug info warn error fatal)]) values, and is optional. logs logs(ArrayRef[HashRef]) This attribute is read-only, accepts (ArrayRef[HashRef]) values, and is optional. refs refs(HashRef) This attribute is read-only, accepts (HashRef) values, and is optional. METHODS This package implements the following methods: begin begin(Str $label) : Object The begin method creates and logs a new context. begin example #1 # given: synopsis $f->begin('test') branch branch(Str $label) : Object The branch method creates and returns a new FlightRecorder object which shares the event log with the parent object. This method creates a new context when called. branch example #1 # given: synopsis $f->begin('test')->branch('next') count count(Maybe[Str] $level) : Int The count method returns the total number of log entries, or the number of log entries matching the log level specified. count example #1 # given: synopsis $f->begin('try')->debug('something happened')->end; $f->count; count example #2 # given: synopsis $f->info('something happened'); $f->count('info'); count example #3 # given: synopsis $f->fatal('something happened'); $f->count('fatal'); data data(HashRef[Str] $data) : Object The data method associates arbitrary metadata with the last event. data example #1 # given: synopsis $f->debug('something happened')->data({ error => 'unknown at ./example line 10' }); debug debug(Str @message) : Object The debug method logs a debug level event with context. debug example #1 # given: synopsis $f->debug('something happened') end end() : Object The end method logs the end of the current context. end example #1 # given: synopsis $f->begin('main')->end error error(Str @message) : Object The error method logs an error level event with context. error example #1 # given: synopsis $f->error('something happened') fatal fatal(Str @message) : Object The fatal method logs a fatal level event with context. fatal example #1 # given: synopsis $f->fatal('something happened') info info(Str @message) : Object The info method logs an info level event with context. info example #1 # given: synopsis $f->info('something happened') output output(FileHandle $handle) : Str The output method outputs the last event using the format defined in the format attribute. This method is called automatically after each log-event if the auto attribute is set, which is by default set to STDOUT. output example #1 # given: synopsis $f->begin('test')->output output example #2 package main; use FlightRecorder; my $f = FlightRecorder->new; $f->begin('try'); # $f->output $f->debug('something happened'); # $f->output $f->end; # $f->output report report(Str $name, Str $level) : Object The report method loads and returns the specified report plugin. report example #1 # given: synopsis $f->report('verbose') report example #2 # given: synopsis $f->report('succinct', 'fatal') reset reset() : Object The reset method returns an object to its initial state. reset example #1 # given: synopsis $f->begin('try')->debug('something happened')->end; $f->reset; reset example #2 # given: synopsis $f->begin('try')->debug('something happened')->end; $f->branch('main')->switch('try')->fatal('something happened')->end; $f->reset; serialize serialize() : HashRef The serialize method normalizes and serializes the event log and returns it as a hashref. serialize example #1 # given: synopsis $f->begin('main')->serialize simple simple() : Object The simple method loads and returns the FlightRecorder::Plugin::ReportSimple report plugin. simple example #1 # given: synopsis $f->simple succinct succinct() : Object The succinct method loads and returns the FlightRecorder::Plugin::ReportSuccinct report plugin. succinct example #1 # given: synopsis $f->succinct switch switch(Str $name) : Object The switch method finds and sets the current context based on the name provided. switch example #1 # given: synopsis $f->begin('main')->begin('test')->switch('main') verbose verbose() : Object The verbose method loads and returns the FlightRecorder::Plugin::ReportVerbose report plugin. verbose example #1 # given: synopsis $f->verbose warn warn(Str @message) : Object The warn method logs a warn level event with context. warn example #1 # given: synopsis $f->warn('something happened') AUTHOR Al Newkirk, awncorp@cpan.org LICENSE Copyright (C) 2011-2019, Al Newkirk, et al. This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file" <https://github.com/iamalnewkirk/flight-recorder/blob/master/LICENSE>. PROJECT Wiki <https://github.com/iamalnewkirk/flight-recorder/wiki> Project <https://github.com/iamalnewkirk/flight-recorder> Initiatives <https://github.com/iamalnewkirk/flight-recorder/projects> Milestones <https://github.com/iamalnewkirk/flight-recorder/milestones> Contributing <https://github.com/iamalnewkirk/flight-recorder/blob/master/CONTRIBUTE.md> Issues <https://github.com/iamalnewkirk/flight-recorder/issues>