The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Log::Log4perl::Appender::Chunk - Group log messages in Identified chunks

DESCRIPTION

This appender will write group of Log lines (chunks) to the underlying store under an ID that you choose.

A number of Store classes are shipped ( in Log::Log4perl::Appender::Chunk::Store::* ), but it's very easy to write your own store, as it's essentially a Key/Value storage.

See Log::Log4perl::Appender::Chunk::Store for more details.

How to mark chunks of logs.

Marking chunks of log rely on the Log4perl Mapped Diagnostic Context (MDC) mechanism. See Log::Log4perl::MDC

Essentially, each time you set a MDC key 'chunk' to something, this appender will start recording chunks and fetch them to the storage when the key 'chunk' is unset or changes.

SYNOPSIS

In your code

Anywhere in your code:

  #  .. Use log4perl as usual ..

  ## Start capturing Log lines in an identified Chunk
  Log::Log4perl::MDC->put('chunk', "Your-Log-Chunk-Unique-ID-Key");

  #  .. Use Log4perl as usual ..

  ## Finish capturing in the identified Chunk
  Log::Log4perl::MDC->put('chunk',undef);

  #  .. Use Log4perl as usual ..
  $logger->info("Blabla"); # Triggers storing the log chunk

Then depending on the configured store, you will be able to retrieve your log chunks from different places. See below.

Configuration

with built-in store Memory

Reference: Log::Log4perl::Appender::Chunk::Store::Memory

log4perl.conf:

  log4perl.rootLogger=TRACE, Chunk

  log4perl.appender.Chunk=Log::Log4perl::Appender::Chunk

  # Built-in store class S3
  log4perl.appender.Chunk.store_class=Memory

  # Etc..
  log4perl.appender.Chunk.layout=..

With built-in store S3

log4perl.conf:

  log4perl.rootLogger=TRACE, Chunk

  log4perl.appender.Chunk=Log::Log4perl::Appender::Chunk

  # Built-in store class S3
  log4perl.appender.Chunk.store_class=S3
  # S3 Specific Arguments:
  log4perl.appender.Chunk.store_args.bucket_name=MyLogChunks
  log4perl.appender.Chunk.store_args.aws_access_key_id=YourAWSAccessKey
  log4perl.appender.Chunk.store_args.aws_secret_access_key=YourAWS

  # Optional:
  log4perl.appender.Chunk.store_args.retry=1
  log4perl.appender.Chunk.store_args.vivify_bucket=1

  log4perl.appender.Chunk.store_args.expires_in_days=3
  log4perl.appender.Chunk.store_args.acl_short=public-read

  # Etc..
  log4perl.appender.Chunk.layout=...

log

Log::Log4perl::Appender framework method.

store

The instance of Log::Log4perl::Appender::Chunk::Store this logger uses.

It's usually configured from the Log4perl configuration file as shown in the SYNOPSIS, but you can also inject it from your application code:

  Log::Log4perl->appender_by_name('Chunk')->store($your_instance_of_storage);

DEMOLISH

Will attempt to store whatever is left in the buffer if your program finishes before it could output any log file outside a Chunk capturing section.