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

AsyncLogWatcher - Asynchronously watches log files for specific patterns

VERSION

Version 0.01

SYNOPSIS

    use AsyncLogWatcher;

    my $watcher = AsyncLogWatcher->new({
        log_file => '/path/to/log',
        patterns_file => '/path/to/patterns',
        on_match => sub {
            my ($line) = @_;
            print "Matched line: $line\n";
        },
    });

    my $guard = $watcher->watch;  # Continues to watch until $guard goes out of scope

DESCRIPTION

The AsyncLogWatcher module provides a way to asynchronously watch a log file and perform actions when specific patterns are matched. The module uses AnyEvent for asynchronous processing and File::Tail for continuous log file reading.

METHODS

new

Creates a new instance of AsyncLogWatcher. It accepts a hashref with the following keys:

  • log_file: The log file to watch.

  • patterns_file: A file containing patterns to match. Each pattern should be on a new line in the file.

  • on_match: A callback to be executed when a line in the log file matches a pattern. The matched line is passed to the callback.

watch

Starts watching the log file for matches against the given patterns. It returns a guard object. As long as the guard is in scope, the watcher will continue watching the log file.

AUTHOR

Kawamura Shingo, <pannakoota@gmail.com>

LICENSE AND COPYRIGHT

Copyright 2023 Kawamura Shingo.

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