customlogging.js 1.29 KB
/**
 * A basic custom logging implementation. The idea is to (extremely) verbosely
 * log every received resource.
 *
 */

if (!phantom.casperLoaded) {
    console.log('This script is intended to work with CasperJS, using its executable.');
    phantom.exit(1);
}

var casper = new phantom.Casper({
    /**
     * Every time a resource is received, a new log entry is added to the stack
     * at the 'verbose' level.
     *
     * @param  Object  resource  A phantomjs resource object
     */
    onResourceReceived: function(self, resource) {
        var infos = [
            resource.url,
            resource.status,
            resource.statusText,
            resource.redirectURL,
            resource.bodySize
        ];
        resource.headers.forEach(function(header) {
            infos.push('[' + [header.name, header.value].join(', ') + ']');
        });
        self.log(infos.join(', '), 'verbose');
    },
    verbose: true,      // we want to see the log printed out to the console
    logLevel: 'verbose' // of course we want to see logs to our new level :)
});

// add a new 'verbose' logging level at the lowest priority
casper.logLevels = ['verbose'].concat(casper.logLevels);

// test our new logger with google
casper.start('http://www.google.com/').run(function(self) {
    self.exit();
});