fed-perf-logger

0.3.2 • Public • Published

#fed-perf-logger

Will open a connection on port 8888 to log performance data to.

##Installation

npm install -g fed-perf-logger from our private registry.

##Usage

###Server

fed-perf-logger from any location. The forever project can be used to keep the service up as a daemon.

USAGE: fed-perf-logger [OPTIONS]

Options:
  -h, --help           Show help                                       [boolean]
  -p, --port                                                     [default: 8888]
  -e, --elasticsearch                                [default: "localhost:9200"]

###Client

Here is a sample script to log perforamnce data to fed-perf-logger:

(function(){
	var req = new XMLHttpRequest();

	req.open('POST', 'SERVER URL/perf-log');

	req.send(
		JSON.stringify(
			['navigationStart','redirectStart','unloadStart','unloadEnd','redirectEnd','fetchStart','domainLookupStart','domainLookupEnd','connectStart','secureConnectionStart','connectEnd','requestStart','responseStart','unloadEventStart','unloadEventEnd','responseEnd','domLoading','domInteractive','domContentLoadedEventStart','domContentLoaded','domContentLoadedEventEnd','domComplete','loadEventStart','loadEventEnd']
				.reduce(function(prev, curr){
					prev[curr]=performance.timing[curr];

					if(prev[curr] !== null && prev[curr] !== undefined){
						prev[curr] = prev[curr] === 0 ? 0 : prev[curr] - performance.timing.navigationStart;
					}

					return prev;
				}, {type: 'performance.timing', url: location.href})
		)
	);
})();

Or to log XHR data:

(function(){
	var oldSend = XMLHttpRequest.prototype.send;
	var PERF_LOG_URL = 'SERVER URL/perf-log';

	XMLHttpRequest.prototype.send = function(){
		var oldStateChange = this.onreadystatechange || function(){};

		this.requestStart = Date.now();

		this.onreadystatechange = function(){
			if(this.readyState === XMLHttpRequest.prototype.DONE){
				this.requestEnd = Date.now();
			}

			oldStateChange.apply(this, arguments);

			if(this.readyState === XMLHttpRequest.prototype.DONE){
				this.handleEnd = Date.now();

				if(this.requestURL !== PERF_LOG_URL){
					var req = new XMLHttpRequest();
					var that = this;

					req.open('POST', PERF_LOG_URL);

					req.send(JSON.stringify([
							'requestStart', 'requestEnd', 'handleEnd'
						].reduce(function(prev, curr){
							prev[curr] = that[curr] - that.requestStart;

							return prev;
						}, {
							status: this.status,
							responseURL: this.responseURL,
							statusText: this.statusText
						}))
					);
				}
			}
		};

		oldSend.apply(this, arguments);
	};
})();

Package Sidebar

Install

npm i fed-perf-logger

Weekly Downloads

10

Version

0.3.2

License

Copyright 2015 Workfront

Last publish

Collaborators

  • mwinche