README
Lester
“I keep asking myself... Who could have done a thing like this?”
— Lester Nygaard, Fargo S01
Usage
You must initialize either TrackJS or Sentry on the page before calling any of the capture/logging functions, e.g:
<script>
window._trackJs = {
token: "YOUR_TOKEN_HERE"
}
</script>
<script type="text/javascript" src="https://.../tracker.js"></script>
<script type="text/javascript" src="./lester.js"></script>
<script>
var lester = new Lester();
lester.log('Now this will work!');
</script>
Multiple Instances
It is possible to use multiple instances within a single web page, each using whichever backend you prefer. For example:
const lester1 = new Lester({backend: Lester.TRACKJS});
const lester2 = new Lester({backend: Lester.SENTRY});
This way you can incrementally update code to use Lester and whichever backend you prefer.
API Reference
Lester
Creates a new Lester instance, allowing you to pass in options.
const lester = new Lester({
backend: 'auto'
});
Options
Name | Description | Default |
---|---|---|
backend |
Backend to use. Set to 'sentry' or 'trackjs' to disable autodetection. |
'auto' |
capture
lester.capture(new Error('An error occurred.'));
Mapping
TrackJS | Sentry |
---|---|
trackJs.track |
raven.captureException |
attempt
lester.attempt
allows you to wrap any function to be immediately executed. Behind the scenes, Lester is just wrapping your code in a try...catch
block to record the exception before re-throwing it.
lester.attempt(function() {
foo(bar.baz);
});
Mapping
TrackJS | Sentry |
---|---|
trackJs.attempt |
raven.context |
wrap
lester.wrap
wraps a function in a similar way to lester.context
, but instead of executing the function, it returns a new function.
var myFunction = lester.wrap(function() {
foo(bar.baz);
});
myFunction()
Mapping
TrackJS | Sentry |
---|---|
trackJs.watch |
raven.wrap |
wrapAll
lester.wrapAll
wraps all functions within a given object.
lester.wrapAll(myModel);
lester.wrapAll(new Model());
Mapping
TrackJS | Sentry |
---|---|
trackJs.watchAll |
raven.wrap for each item |
log
Log data to the console.
lester.log('Some data');
Mapping
TrackJS | Sentry |
---|---|
trackJs.console.log |
raven.captureMessage |
set
Set additional metadata to be logged with errors.
lester.set('role', 'editor');
lester.set({ role: 'editor' });
Mapping
TrackJS | Sentry |
---|---|
trackJs.addMetadata |
raven.setExtraContext |