# NAME

File::Stamped - time stamped log file

# SYNOPSIS

    use File::Stamped;
    my $fh = File::Stamped->new(pattern => '/var/log/myapp.log.%Y%m%d.txt');
    $fh->print("OK\n");

    # with Log::Minimal
    use Log::Minimal;
    my $fh = File::Stamped->new(pattern => '/var/log/myapp.log.%Y%m%d.txt');
    local $Log::Minimal::PRINT = sub {
        my ( $time, $type, $message, $trace) = @_;
        print {$fh} "$time [$type] $message at $trace\n";
    };

# DESCRIPTION

File::Stamped is utility library for logging. File::Stamped object mimic file handle.

You can use "myapp.log.%Y%m%d.log" style log file.

# METHODS

- my $fh = File::Stamped->new(%args);

    This method creates new instance of File::Stamped. The arguments are followings.

    You need to specify one of **pattern** or **callback**.

    - pattern : Str

        This is file name pattern. It is the pattern for filename. The format is POSIX::strftime(), see also [POSIX](https://metacpan.org/pod/POSIX).

    - callback : CodeRef

        You can use a CodeRef to generate file name.

        File::Stamped pass only one arguments to callback function.

        Here is a example code:

            my $pattern = '/path/to/myapp.log.%Y%m%d.log';
            my $f = File::Stamped->new(callback => sub {
                my $file_stamped = shift;
                local $_ = $pattern;
                s/!!/$$/ge;
                $_ = POSIX::strftime($_, localtime());
                return $_;
            });

    - close\_after\_write : Bool

        Default value is 1.

    - iomode: Str

        This is IO mode for opening file.

        Default value is '>>:utf8'.  However, for perl-5.30 compatibility, '>>:raw' is
        used for `syswrite`.

    - autoflush: Bool

        This attribute changes $|.

    - rotationtime: Int

        The time between log file generates in seconds. Default value is 1.

    - auto\_make\_dir: Bool

        If this attribute is true, auto make directry of log file. Default value is false.

    - symlink: Str

        generate symlink file for log file.

- $fh->print($str: Str)

    This method prints the $str to the file.

- $fh->syswrite($str: Str \[, $len: Int, $offset: Int\])

    This method prints the $str to the file.
    This method uses syswrite internally. Writing is not buffered.

# AUTHOR

Tokuhiro Matsuno <tokuhirom AAJKLFJEF@ gmail.com>

# SEE ALSO

[Log::Dispatch::File::Stamped](https://metacpan.org/pod/Log::Dispatch::File::Stamped)

# LICENSE

Copyright (C) Tokuhiro Matsuno

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