Jan Henning Thorsen

NAME

Mojolicious::Plugin::Logf - Plugin for logging datastructures using sprintf

VERSION

0.04

DESCRIPTION

Mojolicious::Plugin::Logf is a plugin which will log complex datastructures and avoid "unitialized" warnings. This plugin use Mojo::Log or whatever "log" in Mojo is set to, to do the actual logging.

SYNOPSIS

  use Mojolicious::Lite;
  plugin "Logf";

  get "/" => sub {
    my $self = shift;

    $self->logf(info => 'request: %s', $self->req->params->to_hash);
  };

HELPERS

logf

  $self = $c->logf;
  $c = $c->logf($level => $format, @args);

Logs a string formatted by the usual printf conventions of the C library function sprintf. $level need to be a valid Mojo::Log level. @args will be converted using "flatten".

Calling this method without any arguments will return $self (an instance of this plugin), allowing you to call "flatten":

  @args_as_strings = $c->logf->flatten(@args);

METHODS

flatten

  @args_as_strings = $self->flatten(@args);

Used to convert input @args using these rules:

  • Scalar

    No rule applied.

  • Object with string overloading

    Will be coverted to a string using the string overloading function.

  • Data structure or object

    Will be serialized using Data::Dumper with these settings:

      $Data::Dumper::Indent = 0;
      $Data::Dumper::Maxdepth = $Data::Dumper::Maxdepth || 2;
      $Data::Dumper::Sortkeys = 1;
      $Data::Dumper::Terse = 1;

    NOTE! These settings might change, but will always do its best to serialize the object into one line. $Data::Dumper::Maxdepth is used to avoid dumping large nested objects. Set this variable if you need deeper logging. Example:

      local $Data::Dumper::Maxdepth = 1000;
      $c->logf(info => 'Deep structure: %s', $some_object);
  • Undefined value

    Will be logged as "__UNDEF__".

register

Will register the "logf" helper in the application

COPYRIGHT AND LICENSE

Copyright (C) 2014, Jan Henning Thorsen

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org