All Projects → krakenjs → Beaver Logger

krakenjs / Beaver Logger

Licence: other
Client-side logging w/ super powers

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Beaver Logger

Elasticsearch Comrade
Elasticsearch admin panel built for ops and monitoring
Stars: ✭ 214 (-1.38%)
Mutual labels:  hacktoberfest
Luvi
A project in-between luv and luvit.
Stars: ✭ 215 (-0.92%)
Mutual labels:  hacktoberfest
Awesome Ansible
Awesome Ansible List
Stars: ✭ 215 (-0.92%)
Mutual labels:  hacktoberfest
Symfony Flex Backend
Symfony Flex REST API template project
Stars: ✭ 214 (-1.38%)
Mutual labels:  hacktoberfest
Hacktoberfest
This hacktoberfest project exists to help you submit your first Pull Request and welcome you to the world of open source!
Stars: ✭ 216 (-0.46%)
Mutual labels:  hacktoberfest
Awesome Learning
Awesome Learning - Learn JavaScript and Front-End Fundamentals at your own pace
Stars: ✭ 216 (-0.46%)
Mutual labels:  hacktoberfest
Community.kubernetes
Kubernetes Collection for Ansible
Stars: ✭ 214 (-1.38%)
Mutual labels:  hacktoberfest
Openapi Backend
Build, Validate, Route, Authenticate and Mock using OpenAPI
Stars: ✭ 216 (-0.46%)
Mutual labels:  hacktoberfest
Almond Cloud
Almond As A Service and Thingpedia
Stars: ✭ 215 (-0.92%)
Mutual labels:  hacktoberfest
Howdy
🛡️ Windows Hello™ style facial authentication for Linux
Stars: ✭ 3,237 (+1391.71%)
Mutual labels:  hacktoberfest
Destinationsol
Official continuation of Destination Sol, the great fun little arcade space shooter from http://sourceforge.net/projects/destinationsol/ Modules live at https://github.com/DestinationSol/
Stars: ✭ 214 (-1.38%)
Mutual labels:  hacktoberfest
Chartbrew
Open-source web platform for creating charts out of different data sources (databases and APIs) 📈📊
Stars: ✭ 199 (-8.29%)
Mutual labels:  hacktoberfest
Miasm
Reverse engineering framework in Python
Stars: ✭ 2,649 (+1120.74%)
Mutual labels:  hacktoberfest
Companies Using R
A Curated list of R uses in entreprise
Stars: ✭ 214 (-1.38%)
Mutual labels:  hacktoberfest
Laravelpackage.com
Documentation for LaravelPackage.com: Learn to create Laravel specific PHP packages from scratch, following this open documentation.
Stars: ✭ 214 (-1.38%)
Mutual labels:  hacktoberfest
Codeforcescontestbot
The best Codeforces Contest Bot written by rachitiitr
Stars: ✭ 214 (-1.38%)
Mutual labels:  hacktoberfest
Awesome Live Coding Streams
Stars: ✭ 216 (-0.46%)
Mutual labels:  hacktoberfest
Avrae
A Discord bot to streamline running D&D 5e.
Stars: ✭ 216 (-0.46%)
Mutual labels:  hacktoberfest
Capsule
A framework for network function development. Written in Rust, inspired by NetBricks and built on DPDK.
Stars: ✭ 217 (+0%)
Mutual labels:  hacktoberfest
Lumen
An alternative BEAM implementation, designed for WebAssembly
Stars: ✭ 2,742 (+1163.59%)
Mutual labels:  hacktoberfest

beaver-logger

Front-end logger, which will:

  • Buffer your front-end logs and periodically send them to the server side
  • Automatically flush logs for any errors or warnings

This is a great tool to use if you want to do logging on the client side in the same way you do on the server, without worrying about sending off a million beacons. You can quickly get an idea of what's going on on your client, including error cases, page transitions, or anything else you care to log!

Overview

Setup

var $logger = beaver.Logger({
    url: '/my/logger/url'
});

Basic logging

$logger.info(<event>, <payload>);

Queues a log. Options are debug, info, warn, error.

For example:

$logger.error('something_went_wrong', { error: err.toString() })

$logger.track(<payload>);

Call this to attach general tracking information to the current page. This is useful if the data is not associated with a specific event, and will be sent to the server the next time the logs are flushed.

Advanced

$logger.addMetaBuilder(<function>);

Attach a method which is called and will attach general information to the logging payload whenever the logs are flushed

$logger.addMetaBuilder(function() {
    return {
        current_page: getMyCurrentPage()
    };
});

$logger.addPayloadBuilder(<function>);

Attach a method which is called and will attach values to each individual log's payload whenever the logs are flushed

$logger.addPayloadBuilder(function() {
    return {
        performance_ts: window.performance.now()
    };
});

$logger.addTrackingBuilder(<function>);

Attach a method which is called and will attach values to each individual log's tracking whenever the logs are flushed

$logger.addTrackingBuilder(function() {
    return {
        pageLoadTime: getPageLoadTime()
    };
});

$logger.addHeaderBuilder(<function>);

Attach a method which is called and will attach values to each individual log requests' headers whenever the logs are flushed

$logger.addHeaderBuilder(function() {
    return {
        'x-csrf-token': getCSRFToken()
    };
});

$logger.flush();

Flushes the logs to the server side. Recommended you don't call this manually, as it will happen automatically after a configured interval.

Installing

  • Install via npm

npm install --save beaver-logger

  • Include in your project
<script src="/js/beaver-logger.min.js"></script>

or

let $logger = require('beaver-logger');

Configuration

Full configuration options:

var $logger = beaver.Logger({

    // Url to send logs to
    url: '/my/logger/url',

    // Prefix to prepend to all events
    prefix: 'myapp',

    // Log level to display in the browser console
    logLevel: beaver.LOG_LEVEL.WARN,

    // Interval to flush logs to server
    flushInterval: 60 * 1000,

    // Use sendBeacon if supported rather than XHR to send logs; defaults to false
    enableSendBeacon: true,
});

Server Side

beaver-logger includes a small node endpoint which will automatically accept the logs sent from the client side. You can mount this really easily:

let beaverLogger = require('beaver-logger/server');

myapp.use(beaverLogger.expressEndpoint({

    // URI to recieve logs at
    uri: '/api/log',

    // Custom logger (optional, by default logs to console)
    logger: myLogger,

    // Enable cross-origin requests to your logging endpoint
    enableCors: false
}))

Or if you're using kraken, you can add this in your config.json as a middleware:

      "beaver-logger": {
          "priority": 106,
          "module": {
              "name": "beaver-logger/server",
              "method": "expressEndpoint",
              "arguments": [
                  {
                      "uri": "/api/log",
                      "logger": "require:my-custom-logger-module"
                  }
              ]
          }
      }

Custom backend logger

Setting up a custom logger is really easy, if you need to transmit these logs to some backend logging service rather than just logging them to your server console:

module.exports = {

    log: function(req, level, event, payload) {

        logSocket.send(JSON.stringify({
            level: level,
            event: event,
            payload: payload
        }));
    }
}

Data Flow

Flow

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].