summaryrefslogtreecommitdiff
path: root/posts/2011-02-20-psgichrome.org
blob: 8f4bb6ae94bc9773fc2a0e11888f2a62c78e4c54 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Earlier this month, I've read about this extension:
[[http://www.chromephp.com/][chromePHP]].

The principle of this extension is to allow you to log from your PHP
application to chrome. You may not be aware, but this is something you
already have with every web application if you're using Plack. And not
only for Chrome, but every webkit navigator, and Firefox too!

Let's mimic their page.

** Installation

1. install
   [[http://search.cpan.org/perldoc?Plack::Middleware::ConsoleLogger][Plack::Middleware::ConsoleLogger]]
   with =cpanm Plack::Middleware::ConsoleLogger=
2. no step 2
3. no step 3
4. write a simple PSGI application and log

#+BEGIN_SRC perl
    use strict;
    use warnings;

    use Plack::Builder;

    my $app = sub {
      my $env     = shift;
      my $content = "<html><body>this is foo</body></html>";
      foreach my $k ( keys %$env ) {
        if ( $k =~ /HTTP_/ ) {
          $env->{'psgix.logger'}->({
            level   => 'debug',
            message => "$k => " . $env->{$k},
          });
        }
      }
      $env->{'psgix.logger'}->({
        level => 'warn',
        message => 'this is a warning',
      });
      $env->{'psgix.logger'}->({
        level => 'error',
        message => 'this is an error',
      });
      return [ 200, [ 'Content-Type' => 'text/html' ], [$content] ];
    };

    builder {
      enable "ConsoleLogger";
      $app;
    }
#+END_SRC

Load this application with plackup: =plackup chromeplack.pl=

point your browser to http://localhost:5000, activate the javascript
console.

If this works correctly, you should have a smiliar output in your
console:

** Dancer

I don't know for other framework, but you can also log to your browser
with [[http://perldancer.org/][Dancer]].

First, you need to install
[[http://search.cpan.org/perldoc?Dancer::Logger::PSGI][Dancer::Logger::PSGI]],
then, in your application, you need to edit the environment file. You'll
certainly want to change 'development.yml'.

#+BEGIN_EXAMPLE
    logger: "PSGI"
    plack_middlewares:
      -
        - ConsoleLogger
#+END_EXAMPLE

Now you can start your application (running in a Plack environment, of
course), and next time you'll use 'warning' or 'debug' or any other
keyword from Dancer::Logger, the message will end up in your javascript
console.