ostrio:loggerfile

v1.1.0Published 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

Simply store application logs into file within ostrio:logger package

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

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

Example:

1this.Log = new Logger();
2var LogFile = new LoggerFile(Log, {
3  fileNameFormat: function(time) {
4    /* Create log-files hourly */
5    return (time.getDate()) + "-" + (time.getMonth() + 1) + "-" + (time.getFullYear()) + "_" + (time.getHours()) + ".log";
6  },
7  format: function(time, level, message, data, userId) {
8    /* Omit Date and hours from messages */
9    return "[" + level + "] | " + (time.getMinutes()) + ":" + (time.getSeconds()) + " | \"" + message + "\" | User: " + userId + "\r\n";
10  },
11  path: '/data/logs/' /* Use absolute storage path */
12});
Activate and set adapter settings [Isomorphic]
1this.Log = new Logger();
2new 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 [Isomorphic]
1this.Log = new Logger();
2new 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); //--> Shortcut for logging without message, e.g.: simple plain log
16
17/* Use with throw */
18throw Log.error(message, data, userId);
Use multiple logger(s) with different settings:
1this.Log1 = new Logger();
2this.Log2 = new Logger();
3
4new LoggerFile(Log1).enable({
5  client: false,
6  server: true
7});
8
9new LoggerFile(Log2, {
10  fileNameFormat: function(time) {
11    return (time.getDate()) + "-" + (time.getMonth() + 1) + "-" + (time.getFullYear()) + "_" + (time.getHours()) + ".log";
12  },
13  format: function(time, level, message, data, userId) {
14    return "[" + level + "] | " + (time.getMinutes()) + ":" + (time.getSeconds()) + " | \"" + message + "\" | User: " + userId + "\r\n";
15  },
16  path: '/data/logs/'
17}).enable({
18  client: false,
19  server: true
20});