The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

LogFilter - A simple log filtering module

SYNOPSIS

  use LogFilter;

  my $filter = LogFilter->new($keywords_file, $exclude_file, $log_file, $interval);

  $filter->filter;

DESCRIPTION

The LogFilter module provides an easy way to filter logs based on keywords and exclude words. It continuously reads a log file and prints lines that contain any of the provided keywords but do not contain any of the provided exclude words.

INSTALLATION

You can install this module:

  git clone https://github.com/kawamurashingo/LogFilter.git
  perl Makefile.PL
  make
  make test
  make install

METHODS

new

Creates a new LogFilter object.

    my $filter = LogFilter->new($keywords_file, $exclude_file, $log_file, $interval);

Arguments:

- $keywords_file: a file containing keywords, one per line. - $exclude_file: a file containing words to exclude, one per line. - $log_file: the log file to read. - $interval: the interval at which to read the log file, in seconds.

filter

Starts filtering the log file.

    $filter->filter;

This method will keep running until the program is terminated.

EXAMPLE

Here is an example of how you might use this module:

  #!/usr/bin/perl

  use strict;
  use warnings;

  use LogFilter;

  my $keywords_file = '/path/to/keywords.txt';
  my $exclude_file = '/path/to/exclude.txt';
  my $log_file = '/path/to/my.log';
  my $interval = 1; # seconds

  my $filter = LogFilter->new($keywords_file, $exclude_file, $log_file, $interval);

  $filter->filter;

This script will now continuously print lines from my.log that contain any of the keywords in keywords.txt, but do not contain any of the words in exclude.txt.

The keywords.txt and exclude.txt files should contain one word per line. For example:

  # keywords.txt
  error
  warning
  failed

  # exclude.txt
  foobar

This will print lines that contain "error", "warning", or "failed", unless the line also contains "foobar".

SEE ALSO

File::Tail, IO::File

AUTHOR

Kawamura Shingo <pannakoota@gmail.com>

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.