---
name: "Plack::Middleware::LogErrors"
section: "3pm"
platform: "linux"
package: "libplack-middleware-logerrors-perl"
version: "0.003-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Plack::Middleware::LogErrors"
---

# Plack::Middleware::LogErrors(3pm)

Map psgi.errors to psgix.logger or other logger

## NAME

Plack::Middleware::LogErrors - Map psgi.errors to psgix.logger or other logger

## VERSION

version 0.003

## SYNOPSIS

Using a logger you have already configured (using Log::Dispatch as an example):

```
    use Log::Dispatch;
    my $logger = Log::Dispatch->new;
    $logger->add( Log::Dispatch::File->new(...) );
    builder {
        enable 'LogDispatch', logger => $logger;
        enable 'LogErrors';
        $app;
    }
```

Using an explicitly defined logger:

```
    builder {
        enable 'LogErrors', logger => sub {
            my $args = shift;
            $logger->log(%$args);
        };
        $app;
    }
```

## DESCRIPTION

`"psgi.errors"` defaults to `"STDERR"` in most backends, which results in content going somewhere unhelpful like the server console.

This middleware simply remaps the `"psgi.errors"` stream to the `"psgix.logger"` stream, or an explicit logger that you provide.

This is especially handy when used in combination with other middlewares such as Plack::Middleware::LogWarn (which diverts Perl warnings to `"psgi.errors"`); Plack::Middleware::HTTPExceptions (which diverts uncaught exceptions to `"psgi.errors"`); and Plack::Middleware::AccessLog, which defaults to `"psgi.errors"` when not passed a logger -- which is also automatically applied via plackup (so if you provided no `"--access-log"` option indicating a filename, `"psgi.errors"` is used).

## CONFIGURATION

### "logger"

A code reference for logging messages, that conforms to the psgix.logger specification. If not provided, `"psgix.logger"` is used, or the application will generate an error at runtime if there is no such logger configured.

## SEE ALSO

- •

  PSGI::Extensions - the definition of `"psgix.logger"`

- •

  "The Error Stream" in PSGI - the definition of `"psgi.errors"`

- •

  Plack::Middleware::LogWarn - maps warnings to `"psgi.errors"`

- •

  Plack::Middleware::HTTPExceptions - maps exceptions to `"psgi.errors"`

- •

  Plack::Middleware::LogDispatch - use a Log::Dispatch logger for `"psgix.logger"`

- •

  Plack::Middleware::Log4perl - use a Log::Log4perl logger for `"psgix.logger"`

- •

  Plack::Middleware::SimpleLogger - essentially the opposite of this module!

## SUPPORT

Bugs may be submitted through the RT bug tracker \<https://rt.cpan.org/Public/Dist/Display.html?Name=Plack-Middleware-LogErrors\> (or bug-Plack-Middleware-LogErrors@rt.cpan.org \<mailto:bug-Plack-Middleware-LogErrors@rt.cpan.org\>).

There is also a mailing list available for users of this distribution, at \<https://groups.google.com/forum/#!forum/psgi-plack\>.

There is also an irc channel available for users of this distribution, at `"#plack"` on `"irc.perl.org"` \<irc://irc.perl.org/#plack\>.

I am also usually active on irc, as 'ether' at `"irc.perl.org"`.

## AUTHOR

Karen Etheridge \<ether@cpan.org\>

## COPYRIGHT AND LICENCE

This software is copyright (c) 2013 by Karen Etheridge.

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