NAME Log::ger::Output::File - Send logs to file VERSION version 0.012 SYNOPSIS use Log::ger::Output 'File' => ( path => '/path/to/file.log', # or handle => $fh lazy => 1, # optional, default 0 ); use Log::ger; log_warn "blah ..."; DESCRIPTION This is a plugin to send logs to a file, with some options. File will be opened with append mode. A lock can be requested at every write, or when opening the file. By default, filehandle will be flushed after each log. CONFIGURATION path => filename Specify filename to open. File will be opened in append mode. handle => glob|obj Alternatively, you can provide an already opened filehandle. autoflush => bool (default: 1) Can be turned off if you need more speed, but note that under the absence of autoflush, partial log messages might be written. lazy => bool (default: 0) If set to true, will only open the file right before we need to log the message (instead of during output initialization). If you have lots of applications that use file logging, this can avoid the proliferation of zero-sized log files. On the other hand, the application bears an additional risk of failing to open a log file in the middle of the run. lock_mode => str (none|write|exclusive, default: none) If you set this to "none" (the default), no locking is done. When there are several applications/processes that output log to the same file, messages from applications might get jumbled, e.g. partial message from application 1 is followed by message from application 2 and 3, then continued by the rest of message from application 1, and so on. If you set this to "write", an attempt to acquire an exclusive lock to "<PATH>.lck" will be made. If all logger processes use locking, this makes it safe to log to the same file. However, this increases the overhead of writing the log which will become non-negligible once you log to files at the rate of thousands per second. Also, when a locking attempt fails after 60 seconds, this module will die. "autoflush" is automatically turned on under this locking mode. If you set this to "exclusive", locking will be attempted only once during the output initialization. TODO When "lock_mode" is set to "exclusive", and user switches output, we have not released the lock. SEE ALSO Log::ger Log::ger::Output::SimpleFile is a simpler output plugin: no locking, autoflush, or lazy options. Log::ger::Output::FileWriteRotate offers autorotation feature. AUTHOR perlancar <perlancar@cpan.org> COPYRIGHT AND LICENSE This software is copyright (c) 2020, 2019, 2017 by perlancar@cpan.org. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.