1.0.0 • Published 9 years ago

icecast-log-parser v1.0.0

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

Quickstart

Build Status Code Climate Test Coverage

Provides handy interface to icecast access.log data. Can be useful for collecting statistics or data analysis.

Use npm install icecast-log-parser to install latest stable version.

Usage

var IcecastAccessLogParser = require('icecast-log-parser');

var parser = new IcecastAccessLogParser();
parser.on('entry', function(entry) {
  console.log(entry); // process entry
});

parser.on('error', function(error) {
  console.log('error', error);
  parser.resume(); // continue data processing after error is handled
});

parser.on('finish', function(){
  console.log('file parsing finished!');
});

var source = require('fs').createReadStream('/var/log/icecast/access.log');
source.pipe(parser);

Events

parser.line

Is emitted for every line in access.log.

parser.on('line', function(line) {
  console.log(line);
});

parser.entry

Is emitted for every successfully parsed line in access.log. See parser.parseLine method for event data.

parser.on('entry', function(entry) {
  console.log(entry);
});

parser.error

Parsing errors will cause error event & data processing stop. Use parser.resume method to continue data processing.

parser.on('error', function(error) {
  console.log(error);
});

parser.finish

Is emitted when source stream data ends.

parser.on('finish', function() {
    console.log('parsing finished');
});

Methods

parser.parseLine

Parses single line from icecast access.log

parser.parseLine('127.0.0.1 - - [19/Jun/2015:18:58:25 +0300] "GET /test.mp3 HTTP/1.0" 302 170 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 YaBrowser/15.6.2311.3927 Safari/537.36" 0');
ParameterTypeDescription
ipStringClient IP address
dateIntegerRequest timestamp
methodStringHTTP method
urlStringRequest url path
statusIntegerHTTP status
sizeIntegerThe size of the object returned to the client in bytes
refererStringReferrer url
agentStringUser-agent
durationIntegerConnection duration

parser.resume

If error event happens, data processing is being stopped. You can call this method to continue data processing.

parser.on('error', function(error) {
  console.log('error', error);
  parser.resume();
});