The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

# Created on: 2008-10-21 07:41:57
# Create by:  ivan
# $Id$
# $Revision$, $HeadURL$, $Date$
# $Revision$, $Source$, $Date$

use strict;
use warnings;
use version;
use Getopt::Long;
use Pod::Usage;
use Data::Dumper qw/Dumper/;
use English qw/ -no_match_vars /;
use FindBin qw/$Bin/;
use Log::Deep::Read;

our $VERSION = version->new('0.3.3');
my ($name)   = $PROGRAM_NAME =~ m{^.*/(.*?)$}mxs;

my %option = (
	verbose => 0,
	man     => 0,
	help    => 0,
	VERSION => 0,
);

if ( !@ARGV ) {
	pod2usage( -verbose => 1 );
}

main();
exit 0;

sub main {

	Getopt::Long::Configure('bundling');
	GetOptions(
		\%option,
		'follow|f',
		'number|n=i',
		'session-number|N=i',
		'session|s=s',
		'time|t=s',
		'filter|l=s%',
		'display|d=s%',
		'breaks|b',
		'verbose|v+',
		'man',
		'help',
		'VERSION!',
	) or pod2usage(2);

	if ( $option{'VERSION'} ) {
		print "$name Version = $VERSION\n";
		exit 1;
	}
	elsif ( $option{'man'} ) {
		pod2usage( -verbose => 2 );
	}
	elsif ( $option{'help'} ) {
		pod2usage( -verbose => 1 );
	}

	# Create the log reader object
	my $log = Log::Deep::Read->new(%option);

	$log->read_files(@ARGV);

	return;
}

__DATA__

=head1 NAME

deep - Prettily displays the data from a log file generated by Log::Deep

=head1 VERSION

This documentation refers to deep version 0.3.3.

=head1 SYNOPSIS

   deep [option]

 OPTIONS:
  -f --follow   Keep monitoring the file once end is reached
  -n --number int
                Specifies the number of log lines to display from the end of
                the file.
  -N --session-number int
                Specifies the number of sessions from the end of the log file
                to start displaying.
  -s --session session_id
  -t --time ???
  -l --filter ???
                Sets the filter for the log messages that are to be displayed
  -d --display item=[ 1 | 0 | see below ]
                Toggles the fields to display. This can be specified many
                times to fully describe what to display.
                Fields currently include:
                  data : The data supplied when the message was written
                  stack: The stack trace where the log was called
                  vars : The stored variables with the log object. A value
                         of 1 shows all vars other wise individual vars are
                         turned on by comma seperating their names.
  -b --breaks   Display blank lines to indicate gaps in time

  -v --verbose  Show more detailed option
     --version  Prints the version information
     --help     Prints this help information
     --man      Prints the full documentation for deep

=head1 DESCRIPTION

=head1 SUBROUTINES/METHODS

=head1 DIAGNOSTICS

=head1 CONFIGURATION AND ENVIRONMENT

=head1 DEPENDENCIES

=head1 INCOMPATIBILITIES

There are no known bugs in this module.

Please report problems to Ivan Wills (ivan.wills@gmail.com).

Patches are welcome.

=head1 AUTHOR

Ivan Wills - (ivan.wills@gmail.com)

=head1 LICENSE AND COPYRIGHT

Copyright (c) 2009 Ivan Wills (14 Mullion Close, Hornsby Heights, NSW 2077).
All rights reserved.

This module is free software; you can redistribute it and/or modify it under
the same terms as Perl itself. See L<perlartistic>.  This program is
distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

=cut