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

veliovgroup / Meteor-logger-file

Licence: BSD-3-Clause license
๐Ÿ”– Meteor Logging: Store application log messages into file (FS)

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Meteor-logger-file

Meteor-logger
๐Ÿงพ Meteor isomorphic logger. Store application logs in File (FS), MongoDB, or print in Console
Stars: โœญ 51 (+112.5%)
Mutual labels:  meteor, meteor-package, logger, meteorjs
hypersubs
an upgraded version of Meteor subscribe, which helps optimize data and performance!
Stars: โœญ 13 (-45.83%)
Mutual labels:  meteor, meteor-package, meteorjs
Meteor-Template-helpers
Template helpers for Session, logical operations and debug
Stars: โœญ 35 (+45.83%)
Mutual labels:  meteor, meteor-package, meteorjs
Meteor-flow-router-title
Change document.title on the fly within flow-router
Stars: โœญ 23 (-4.17%)
Mutual labels:  meteor, meteor-package, meteorjs
flow-router
๐Ÿšฆ Carefully extended flow-router for Meteor
Stars: โœญ 191 (+695.83%)
Mutual labels:  meteor, meteor-package, meteorjs
Meteor-logger-mongo
๐Ÿƒ Meteor Logging: Store application log messages in MongoDB
Stars: โœญ 20 (-16.67%)
Mutual labels:  meteor, meteor-package, meteorjs
svelte-meteor-data
Reactively track Meteor data inside Svelte components
Stars: โœญ 14 (-41.67%)
Mutual labels:  meteor, meteor-package, meteorjs
awesome-blaze
๐Ÿ”ฅA curated list of awesome things related to Blaze
Stars: โœญ 29 (+20.83%)
Mutual labels:  meteor, meteor-package, meteorjs
Meteor Transactions
App level transactions for Meteor + Mongo
Stars: โœญ 115 (+379.17%)
Mutual labels:  meteor, meteor-package
Meteor Reactive Publish
Reactive publish endpoints
Stars: โœญ 123 (+412.5%)
Mutual labels:  meteor, meteor-package
Meteor Google Maps
๐Ÿ—บ Meteor package for the Google Maps Javascript API v3
Stars: โœญ 198 (+725%)
Mutual labels:  meteor, meteor-package
Meteor Comments Ui
Simple templates for comment functionality in your Meteor App
Stars: โœญ 78 (+225%)
Mutual labels:  meteor, meteor-package
Ostrio Neo4jdriver
Most advanced and efficient Neo4j REST API Driver, with support of https and GrapheneDB
Stars: โœญ 55 (+129.17%)
Mutual labels:  meteor, meteor-package
Meteor Peerdb
Reactive database layer with references, generators, triggers, migrations, etc.
Stars: โœญ 128 (+433.33%)
Mutual labels:  meteor, meteor-package
Meteor Files
๐Ÿš€ Upload files via DDP or HTTP to โ˜„๏ธ Meteor server FS, AWS, GridFS, DropBox or Google Drive. Fast, secure and robust.
Stars: โœญ 1,033 (+4204.17%)
Mutual labels:  meteor, meteor-package
Autocms
AutoCms is a simple solution for your Meteor.js app
Stars: โœญ 34 (+41.67%)
Mutual labels:  meteor, meteor-package
management tools
A collection of scripts and packages to simplify OS X management.
Stars: โœญ 93 (+287.5%)
Mutual labels:  filesystem, logger
blaze-integration
Vue integration with Meteor's Blaze rendering engine.
Stars: โœญ 24 (+0%)
Mutual labels:  meteor, meteor-package
meteor-computed-field
Reactively computed field for Meteor
Stars: โœญ 18 (-25%)
Mutual labels:  meteor, meteor-package
RxLogs
An Android & Kotlin Reactive Advanced Logging Framework.
Stars: โœญ 12 (-50%)
Mutual labels:  filesystem, logger

support support

Logging: To File

File adapter for logger driver. Store application log messages (from both Client and Server) in the file. By default log file is rotated daily, you can easily adjust it to hourly, monthly, or any other period, via fileNameFormat.

Whenever you log message(s) on Client or Sever, it goes directly to a log file on your Server.

Features:

  • ๐Ÿค“ Support Windows, Linux, and MacOS environments;
  • ๐Ÿ‘ทโ€โ™‚๏ธ 100% tests coverage;
  • ๐Ÿ’ช Flexible log level filters;
  • ๐Ÿ‘จโ€๐Ÿ’ป userId is automatically passed and logged, data is associated with logged-in user;
  • ๐Ÿ“Ÿ Pass logs from Client to Server;
  • ๐Ÿ•ท Catch all browser's errors and exceptions.

Installation:

meteor add ostrio:logger # If not yet installed
meteor add ostrio:loggerfile

ES6 Import:

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

FAQ:

  • Q: Where to find the log file?
    • A: On dev stage: /static/logs. On prod stage: /assets/app/logs. Change this behavior with options.path (see below)
  • Q: Log files are gone, why?
    • A: All logs will be removed as soon as your application rebuilds or you run meteor reset. To keep your logs persistent during development use an absolute path outside of your project folder, e.g. /logs directory. Make sure selected directory is writable by node/meteor's process owner

Usage

Initialize Logger instance and pass it into LoggerInstance constructor to enable logging into the log file.

Initialization [Isomorphic]

new LoggerFile(LoggerInstance, options)

  • LoggerInstance {Logger} - from new Logger()
  • options {Object}
  • options.path {String} - Log's storage path, absolute, or relative to NodeJS process, note: do not use '~' (path relative to user)
  • options.fileNameFormat {Function} - Log file name, use to adjust file creation frequency, arguments:
    • time {Date}
  • options.format {Function} - Log record format, arguments:
    • time {Date}
    • level {String} - 'ERROR', 'FATAL', 'WARN', 'DEBUG', 'INFO', 'TRACE'
    • message {String}
    • data {Object}
    • userId {String} - set if user is logged in and package accounts-base is installed
    • Note: Do not forget \r\n at the end of record-line

Example:

import { Logger } from 'meteor/ostrio:logger';
import { LoggerFile } from 'meteor/ostrio:loggerfile';
// Initialize Logger:
const log = new Logger();
// Initialize and enable LoggerFile with default settings:
(new LoggerFile(log)).enable();

Example 2:

import { Logger } from 'meteor/ostrio:logger';
import { LoggerFile } from 'meteor/ostrio:loggerfile';
// Initialize Logger:
const log = new Logger();

// Initialize LoggerFile:
const logFile = new LoggerFile(log, {
  fileNameFormat(time) {
    // Create/Rotate log-files hourly
    return `${time.getDate()}-${time.getMonth() + 1}-${time.getFullYear()}_${time.getHours()}.log`;
  },
  format(time, level, message, data, userId) {
    // Omit Date and hours from messages
    return `[${level}] | ${time.getMinutes()}:${time.getSeconds()} | ${message}' | User: ${userId}\n`;
  },
  path: '/data/logs/' // Use absolute storage path
});

// Enable LoggerFile with default settings
logFile.enable();

Activate and set adapter settings: [Isomorphic]

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

const log = new Logger();
(new LoggerFile(log)).enable({
  enable: true,
  filter: ['ERROR', 'FATAL', 'WARN'], // Filters: 'ERROR', 'FATAL', 'WARN', 'DEBUG', 'INFO', 'TRACE', '*'
  client: true, // Set to `false` to avoid Client to Server logs transfer
  server: true  // Allow logging on server
});

Log message: [Isomorphic]

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

const log = new Logger();
(new LoggerFile(log)).enable();

/*
  message {String} - 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); // 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', (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 = function (message, stack) {
  const error = new Error(message);
  error.stack = stack;
  log.error('Meteor Error!', error);
  return originalMeteorDebug.apply(this, arguments);
};

Use multiple logger(s) with different settings:

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

const log1 = new Logger();
const log2 = new Logger();

(new LoggerFile(log1)).enable();

(new LoggerFile(log2, {
  fileNameFormat(time) {
    return (time.getDate()) + '-' + (time.getMonth() + 1) + '-' + (time.getFullYear()) + '_' + (time.getHours()) + '.log';
  },
  format(time, level, message, data, userId) {
    return `[${level}] | ${time.getMinutes()}:${time.getSeconds()} | ${message}' | User: ${userId}\n`;
  },
  path: '/data/logs/'
})).enable();

Running Tests

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

Meteor/Tinytest

meteor test-packages ./

Support this awesome package:

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