summaryrefslogtreecommitdiff
path: root/_posts/2011-02-20-psgichrome.md
diff options
context:
space:
mode:
authorFranck Cuny <franck.cuny@gmail.com>2013-11-26 10:36:10 -0800
committerFranck Cuny <franck.cuny@gmail.com>2013-11-26 10:36:10 -0800
commit8ddf2e94df70707b458528a437759b96046d3e01 (patch)
treed442818d92d3c9c6f7fcdc92857a1228963849a1 /_posts/2011-02-20-psgichrome.md
parentDon't need to use the IP in the makefile. (diff)
downloadlumberjaph-8ddf2e94df70707b458528a437759b96046d3e01.tar.gz
Huge update.
Moved all posts from textile to markdown. Updated all the CSS and styles. Added a new page for the resume.
Diffstat (limited to '_posts/2011-02-20-psgichrome.md')
-rw-r--r--_posts/2011-02-20-psgichrome.md75
1 files changed, 75 insertions, 0 deletions
diff --git a/_posts/2011-02-20-psgichrome.md b/_posts/2011-02-20-psgichrome.md
new file mode 100644
index 0000000..bf8338a
--- /dev/null
+++ b/_posts/2011-02-20-psgichrome.md
@@ -0,0 +1,75 @@
+---
+layout: post
+summary: In which I show how to log from a PSGI app to Chrome.
+title: PSGIChrome
+---
+
+Earlier this month, I've read about this extension: [chromePHP](http://www.chromephp.com/).
+
+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 [Plack::Middleware::ConsoleLogger](http://search.cpan.org/perldoc?Plack::Middleware::ConsoleLogger) (`cpanm Plack::Middleware::ConsoleLogger`)
+2. no step 2
+3. no step 3
+4. write a simple PSGI application and log
+
+{% highlight 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;
+}
+{% endhighlight %}
+
+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:
+
+<a href="http://f.lumberjaph.net/blog/misc/plack_chrome.png"><img class="img_center" src="http://f.lumberjaph.net/blog/misc/plack_chrome.png" /></a>
+
+## Dancer
+
+I don't know for other framework, but you can also log to your browser with [Dancer](http://perldancer.org/).
+
+First, you need to install [Dancer::Logger::PSGI](http://search.cpan.org/perldoc?Dancer::Logger::PSGI), then, in your application, you need to edit the environment file. You'll certainly want to change 'development.yml'.
+
+{% highlight yaml %}
+logger: "PSGI"
+plack_middlewares:
+ -
+ - ConsoleLogger
+{% endhighlight %}
+
+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.