2.2.0 • Published 3 years ago

system-logger v2.2.0

Weekly downloads
10
License
MIT
Repository
github
Last release
3 years ago

system-logger

Provide the basic logging mechanism. It can be easy to inject the storage logic for those logging result.

License Build Status Coverage Status Dependency Status devDependency Status semantic-release JavaScript Style Guide Greenkeeper badge Known Vulnerabilities npm badge

Contents



Quick Start

Install via npm:

npm install system-logger --save

Definition

const logger = require('system-logger');

logger.log(level, message, options)

  • level: Logging level representing priorities (error, warn, info, verbose, debug, silly)
  • message: Major information
  • options: optional information

Example

Get Start

const systemlogger = require('system-logger');
const { Logger } = systemlogger;

const logConfig = { level: systemlogger.level.silly };
const logger = new Logger(logConfig);

logger.log('error', `Fail Log Message`, { error: 'err message' });
logger.log('error', `Fail Log Message`, new Error('Timeout'));
logger.log('error', `Fail Log Message`, [1, '1234']);
logger.log('warn', `Warn Log Message`, { warn: 'Should not happening' });
logger.log('info', `Information Log Message`, 'test message');
logger.log('info', `Information Log Message`, {
  cId: '34a343a3-7cd0-4d88-a8ed-733ba36d3a3c',
  action: { id: 879 },
});
logger.log('verbose', `Verbose Log Message`, {
  event: { type: 'open', message: 'test' },
});
logger.log('debug', `Debug Log Message`, {
  action: { id: 123, name: 'tester' },
});
logger.log('silly', `Silly Log Message`);

Startup Output

Save to log file

const systemlogger = require('system-logger');
const { Logger } = systemlogger;

const logConfig = { level: systemlogger.level.info };
const fileConfig = { saveToFileName: './track.log' };

const logger = new Logger(logConfig, fileConfig);

logger.log('info', `Information Log Message`, {
  cId: '34a343a3-7cd0-4d88-a8ed-733ba36d3a3c',
  action: { id: 879 },
});

Overwrite with message format

const systemlogger = require('system-logger');
const { Logger } = systemlogger;

const logConfig = { level: systemlogger.level.info };
logConfig.externalDisplayFormat = (info) => {
  if (info.optional === null || typeof info.optional === 'undefined') {
    return `${info.timestamp} ${info.level}: ${info.message}`;
  } else {
    return `${info.timestamp} ${info.level}: ${info.message} [Detail: { cId: ${info.optional.cId}, actionId: ${info.optional.action.id} }]`;
  }
};
const logger = new Logger(logConfig);

logger.log('info', `Information Log Message`, {
  cId: '34a343a3-7cd0-4d88-a8ed-733ba36d3a3c',
  action: { id: 879 },
});

Use Case

Need to disable the entire logging during testing

const systemlogger = require('system-logger');
const { Logger } = systemlogger;

const logConfig = { level: systemlogger.level.info, silent: true };
const fileConfig = { saveToFileName: './track.log' };

const logger = new Logger(logConfig, fileConfig);

// The following code will execute, but nothing will be logged.
logger.log('info', `Information Log Message`, {
  cId: '34a343a3-7cd0-4d88-a8ed-733ba36d3a3c',
  action: { id: 879 },
});
logger.log('error', `Fail Log Message`, { error: 'err message' });

Need to rotate log file

const systemlogger = require('system-logger');
const { Logger } = systemlogger;

const logConfig = { level: systemlogger.level.info };
const fileConfig = {
  saveToFileName: './track.log',
  isFileRotate: true,
  fileRotateType: systemlogger.fileRotateType.daily,
};

const logger = new Logger(logConfig, fileConfig);
logger.log('info', `Information Log Tests`, { Detail: 'test' });

Need to persist to DB

const systemlogger = require('system-logger');
const { Logger } = systemlogger;

const logExternalCallBack = async function (
  connector,
  type,
  message,
  detail,
  cId,
) {
  const sql = require('mssql');
  const result = await connector
    .request()
    .input('type_parameter', sql.TinyInt, type)
    .input('cId_parameter', sql.NVarChar, cId)
    .input('message_parameter', sql.NVarChar, message)
    .input('detail_parameter', sql.NVarChar, detail)
    .query(`INSERT INTO Process_Log
      ([LogType], [CId], [Message], [Detail])
      VALUES
      (@type_parameter,
      @cId_parameter,
      @message_parameter,
      @detail_parameter)`);
  return result;
};

const logConfig = { level: systemlogger.level.info };

const mssql = require('mssql');
const localhost = 'localhost';
const database = 'MonitorDB';
const username = 'UserMonitor';
const password = 'Test!23AbcPassword';
const pool = await mssql.connect(
  `mssql://${username}:${password}@${localhost}/${database}`,
);
const sourceConfig = {
  levels: [
    systemlogger.level.error,
    systemlogger.level.warn,
    systemlogger.level.info,
  ],
  connector: pool,
  callback: logExternalCallBack,
};

const logger = new Logger(logConfig, null, sourceConfig);

await logger.log('info', `Simple Log Test`, {
  Detail: 'test',
  cid: '9c4f5aba-6cb5-4b06-aa50-d6718a41f350',
});
pool.close();

License

MIT

2.2.0

3 years ago

2.1.3

5 years ago

2.1.2

5 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.0

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago