ostrio:loggerfile

v1.1.2Published 8 years ago

This package has not had recent updates. Please investigate it's current state before committing to using it in your project.

Logging: To File

Store application log messages (from Client & Server) into the file. By default log-file created daily, you can easily adjust it to hourly or monthly or any other period, via fileNameFormat.

Whenever you log message(s) on client or sever, it goes directly to log-file on your server.

Installation:

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

Support this awesome package:

Usage

Initialization [Isomorphic]

new LoggerFile(LoggerInstance, options)

  • LoggerInstance {Logger} - from new Logger()
  • options {Object}
  • 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
  • options.path {String} - Log's storage path, absolute, or relative to NodeJS process, note: do not use '~' (path relative to user)!

Example:

1// Initialize Logger:
2this.log = new Logger();
3
4// Initialize LoggerFile and enable with default settings:
5(new LoggerFile(log)).enable();

Example 2:

1// Initialize Logger
2this.log = new Logger();
3
4// Initialize LoggerFile:
5var LogFile = new LoggerFile(log, {
6  fileNameFormat: function(time) {
7    /* Create log-files hourly */
8    return (time.getDate()) + "-" + (time.getMonth() + 1) + "-" + (time.getFullYear()) + "_" + (time.getHours()) + ".log";
9  },
10  format: function(time, level, message, data, userId) {
11    /* Omit Date and hours from messages */
12    return "[" + level + "] | " + (time.getMinutes()) + ":" + (time.getSeconds()) + " | \"" + message + "\" | User: " + userId + "\r\n";
13  },
14  path: '/data/logs/' /* Use absolute storage path */
15});
16
17// Enable LoggerFile with default settings
18LogFile.enable();
Activate and set adapter settings: [Isomorphic]
1this.log = new Logger();
2(new LoggerFile(log)).enable({
3  enable: true,
4  filter: ['ERROR', 'FATAL', 'WARN'], /* Filters: 'ERROR', 'FATAL', 'WARN', 'DEBUG', 'INFO', 'TRACE', '*' */
5  client: false, /* This allows to call, but not execute on Client */
6  server: true   /* Calls from client will be executed on Server */
7});
Log message: [Isomorphic]
1this.log = new Logger();
2(new LoggerFile(log)).enable();
3
4/*
5  message {String} - Any text message
6  data    {Object} - [optional] Any additional info as object
7  userId  {String} - [optional] Current user id
8 */
9log.info(message, data, userId);
10log.debug(message, data, userId);
11log.error(message, data, userId);
12log.fatal(message, data, userId);
13log.warn(message, data, userId);
14log.trace(message, data, userId);
15log._(message, data, userId); //--> Plain log without level
16
17/* Use with throw */
18throw log.error(message, data, userId);
Catch-all Client's errors example: [Client]
1/* Store original window.onerror */
2var _WoE = window.onerror;
3
4window.onerror = function(msg, url, line) {
5  log.error(msg, {file: url, onLine: line});
6  if (_WoE) {
7    _WoE.apply(this, arguments);
8  }
9};
Use multiple logger(s) with different settings:
1this.log1 = new Logger();
2this.log2 = new Logger();
3
4(new LoggerFile(log1)).enable();
5
6(new LoggerFile(log2, {
7  fileNameFormat: function(time) {
8    return (time.getDate()) + "-" + (time.getMonth() + 1) + "-" + (time.getFullYear()) + "_" + (time.getHours()) + ".log";
9  },
10  format: function(time, level, message, data, userId) {
11    return "[" + level + "] | " + (time.getMinutes()) + ":" + (time.getSeconds()) + " | \"" + message + "\" | User: " + userId + "\r\n";
12  },
13  path: '/data/logs/'
14})).enable();