All Projects โ†’ veliovgroup โ†’ Meteor-logger

veliovgroup / Meteor-logger

Licence: BSD-3-Clause license
๐Ÿงพ Meteor isomorphic logger. Store application logs in File (FS), MongoDB, or print in Console

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Meteor-logger

Meteor-logger-file
๐Ÿ”– Meteor Logging: Store application log messages into file (FS)
Stars: โœญ 24 (-52.94%)
Mutual labels:  meteor, meteor-package, logger, meteorjs
svelte-meteor-data
Reactively track Meteor data inside Svelte components
Stars: โœญ 14 (-72.55%)
Mutual labels:  meteor, meteor-package, meteorjs
Meteor-Template-helpers
Template helpers for Session, logical operations and debug
Stars: โœญ 35 (-31.37%)
Mutual labels:  meteor, meteor-package, meteorjs
Meteor-logger-mongo
๐Ÿƒ Meteor Logging: Store application log messages in MongoDB
Stars: โœญ 20 (-60.78%)
Mutual labels:  meteor, meteor-package, meteorjs
awesome-blaze
๐Ÿ”ฅA curated list of awesome things related to Blaze
Stars: โœญ 29 (-43.14%)
Mutual labels:  meteor, meteor-package, meteorjs
Meteor-flow-router-title
Change document.title on the fly within flow-router
Stars: โœญ 23 (-54.9%)
Mutual labels:  meteor, meteor-package, meteorjs
flow-router
๐Ÿšฆ Carefully extended flow-router for Meteor
Stars: โœญ 191 (+274.51%)
Mutual labels:  meteor, meteor-package, meteorjs
Ostrio Neo4jdriver
Most advanced and efficient Neo4j REST API Driver, with support of https and GrapheneDB
Stars: โœญ 55 (+7.84%)
Mutual labels:  meteor, meteor-package, driver
hypersubs
an upgraded version of Meteor subscribe, which helps optimize data and performance!
Stars: โœญ 13 (-74.51%)
Mutual labels:  meteor, meteor-package, meteorjs
fragments
Organise your bookmarks into boards
Stars: โœญ 56 (+9.8%)
Mutual labels:  meteor, meteorjs
meteor-two-factor
๐Ÿ” Two factor authentication package for accounts-password
Stars: โœญ 80 (+56.86%)
Mutual labels:  meteor, meteor-package
meteor-reactive-mongo
Reactive server-side MongoDB queries
Stars: โœญ 14 (-72.55%)
Mutual labels:  meteor, meteor-package
meteor-server-autorun
Server-side Tracker.autorun
Stars: โœญ 36 (-29.41%)
Mutual labels:  meteor, meteor-package
jazeee-meteor-spiderable
Fork of Meteor Spiderable with longer timeout, caching, better server handling
Stars: โœญ 33 (-35.29%)
Mutual labels:  meteor-package, meteorjs
Client-Storage
๐Ÿ—„ Bulletproof persistent Client storage, works with disabled Cookies and/or localStorage
Stars: โœญ 15 (-70.59%)
Mutual labels:  meteor, meteor-package
meteor-subscription-scope
Scope queries on collections to subscriptions
Stars: โœญ 20 (-60.78%)
Mutual labels:  meteor, meteor-package
meteor-blaze-bs4
Generic Bootstrap 4 components library for Meteor Blaze.
Stars: โœญ 20 (-60.78%)
Mutual labels:  meteor, meteorjs
meteor-search
๐Ÿ” SPIKE of full-text search in MongoDB using Meteor
Stars: โœญ 40 (-21.57%)
Mutual labels:  meteor, meteorjs
Meteor-Mailer
๐Ÿ“ฎ Bulletproof email queue on top of NodeMailer with support of multiple clusters and servers setup
Stars: โœญ 21 (-58.82%)
Mutual labels:  meteor, meteor-package
ostrio-analytics
๐Ÿ“Š Visitor's analytics tracking code for ostr.io service
Stars: โœญ 14 (-72.55%)
Mutual labels:  meteor, meteor-package

Isomorphic logging driver

To use this package install an adapter (separately):

  • File - Store application log messages into the file (FS), log rotation included;
  • Mongo - Store application log messages into MongoDB;
  • Console - Print Client's application log messages to Server's console, messages colorized for better readability.

Features:

  • ๐Ÿ‘ทโ€โ™‚๏ธ 100% tests coverage;
  • ๐Ÿ’ช Flexible log level filters, ex: write FATAL, ERROR, and WARN to file, DEBUG to console, and all other to MongoDB;
  • ๐Ÿ‘จโ€๐Ÿ’ป userId is automatically passed and logged, data is associated with logged-in user;
  • ๐Ÿ“Ÿ Pass logs from Client to Server;
  • ๐Ÿ•ท Catch all browser's errors.

Meteor Logger Library

Installation:

meteor add ostrio:logger

ES6 Import:

import { Logger } from 'meteor/ostrio:logger';

Usage

Logger [Isomorphic]

const log = new Logger();

/* Activate adapters with default settings */
/* meteor add ostrio:loggerfile */
new LoggerFile(log).enable();
/* meteor add ostrio:loggermongo */
new LoggerMongo(log).enable();
/* meteor add ostrio:loggerconsole */
new LoggerConsole(log).enable();

/* Log message
 * message {String|Number} - Any text message
 * data    {Object} - [optional] Any additional info as object
 * userId  {String} - [optional] Current user id
 */
log.info(message, data, userId);
log.debug(message, data, userId);
log.error(message, data, userId);
log.fatal(message, data, userId);
log.warn(message, data, userId);
log.trace(message, data, userId);
log._(message, data, userId); //--> Plain shortcut

/* Use with throw */
throw log.error(message, data, userId);

Catch-all Client's errors example: [CLIENT]

/* Store original window.onerror */
const _GlobalErrorHandler = window.onerror;

window.onerror = function (msg, url, line) {
  log.error(msg, {file: url, onLine: line});
  if (_GlobalErrorHandler) {
    _GlobalErrorHandler.apply(this, arguments);
  }
};

Catch-all Server's errors example: [Server]

const bound = Meteor.bindEnvironment((callback) => {callback();});
process.on('uncaughtException', function (err) {
  bound(() => {
    log.error('Server Crashed!', err);
    console.error(err.stack);
    process.exit(7);
  });
});

Catch-all Meteor's errors example: [Server]

// store original Meteor error
const originalMeteorDebug = Meteor._debug;
Meteor._debug = (message, stack) => {
  const error = new Error(message);
  error.stack = stack;
  log.error('Meteor Error!', error);
  return originalMeteorDebug.apply(this, arguments);
};

Register new adapter [Isomorphic]

Mainly should be used by adapter developers, a.k.a. developer API.

/* Emitter function
 * name        {String}    - Adapter name
 * emitter     {Function}  - Function called on Meteor.log...
 * init        {Function}  - Adapter initialization function
 * denyClient  {Boolean}   - Strictly deny execution on client
 * denyServer  {Boolean}   - Strictly deny execution on server
 * Example: log.add(name, emitter, init, denyClient, denyServer);
 */

const emitter = (level, message, data, userId) => {
  /* .. do something with a message .. */
};

const init = () => {
  /* Initialization function */
  /* For example create a collection */
  log.collection = new Meteor.Collection('logs');
};

log.add('AdapterName', emitter, init, true, false);

Enable/disable adapter and set its settings [Isomorphic]

/*
 * name    {String} - Adapter name
 * options {Object} - Settings object, accepts next properties:
 * options.enable {Boolean} - Enable/disable adapter
 * options.filter {Array}   - Array of strings, accepts:
 *                            'ERROR', 'FATAL', 'WARN', 'DEBUG', 'INFO', '*'
 *                            in lowercase and uppercase
 *                            default: ['*'] - Accept all
 * options.client {Boolean} - Allow execution on Client
 * options.server {Boolean} - Allow execution on Server
 * Example: log.rule(name, options);
 */

/* Example: */
log.rule('AdapterName', {
  enable: true,
  filter: ['ERROR', 'FATAL', 'WARN'],
  client: false, /* Allow to call, but not execute on Client */
  server: true   /* Calls from client will be executed on Server */
});

Running Tests

  1. Clone this package
  2. In Terminal (Console) go to directory where package is cloned
  3. Then run:

Meteor/Tinytest

# Default
meteor test-packages ./

# With custom port
meteor test-packages ./ --port 8888

# With local MongoDB and custom port
MONGO_URL="mongodb://127.0.0.1:27017/logger-tests" meteor test-packages ./ --port 8888

Support our open source contribution:

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].