iamqp
Version:
RabbitMQ wrapper for NodeJS with several produce(reply)/consume scenarios
188 lines (156 loc) • 10 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>console_logger.js - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav>
<li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Common.html">Common</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#_commonPublishPreparations">_commonPublishPreparations</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#_emitAndDispatchError">_emitAndDispatchError</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#_logData">_logData</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#_messageDispatcherWrapper">_messageDispatcherWrapper</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#_parseConsumedMessage">_parseConsumedMessage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#_preparePublishingMessage">_preparePublishingMessage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#closeConnection">closeConnection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#getEventer">getEventer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#isReady">isReady</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#openConnection">openConnection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Common.html#toString">toString</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ConsoleLogger.html">ConsoleLogger</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ConsoleLogger.html#error">error</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ConsoleLogger.html#info">info</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ConsoleLogger.html#log">log</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ConsoleLogger.html#warn">warn</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="FanoutConsumer.html">FanoutConsumer</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="FanoutProducer.html">FanoutProducer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="FanoutProducer.html#fanout">fanout</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="PlainConsumer.html">PlainConsumer</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="PlainProducer.html">PlainProducer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="PlainProducer.html#publish">publish</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="RpcClient.html">RpcClient</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="RpcClient.html#callRemote">callRemote</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="RpcServer.html">RpcServer</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="RpcServer.html#respond">respond</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="UUIDv4.html">UUIDv4</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UUIDv4.html#generate">generate</a></span></li><li class="nav-heading"><a href="global.html">Globals</a></li>
</nav>
<div id="main">
<h1 class="page-title">console_logger.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>const chalk = require('chalk')
const SysLogger = require('ain2')
/**
* Interface some coloured terminal logging and syslog on Linux.
*
* Provides four types of logs:
* <ul>
* <li><b>info (blue)</b> - operational messages that require no action</li>
* <li><b>log (yellow)</b> - useful information (in terms of debugging for instance)</li>
* <li><b>warn (magenta)</b> - do not stops the execution but have the potential to</li>
* <li><b>error (red)</b> - errors that are stopping some operational flow</li>
* </ul>
*
* Provides an option to use <a href="https://en.wikipedia.org/wiki/Syslog">syslog</a> - print to systems log.
* This was tested on <code>Ubuntu 16.04</code>.
* To enable this, open <code>/etc/rsyslog.conf</code> and enable <i>UDP</i> on port <i>514</i>.
* This is usually just commented and needs uncommenting:
* <pre>
* # provides UDP syslog reception
* module(load="imudp")
* input(type="imudp" port="514")
* </pre>
* ... and restart the service with <code>./etc/init.d/rsyslog restart</code>.
* The logs should appear in <code>/var/log/syslog</code>.
*
* To control the logging, use environmental variables:
* <ul>
* <li><code>DBTRC_SYSLOG_F</code> set to <code>OK</code> to enable syslog logging
* <pre>
* DBTRC_SYSLOG_F=OK node ...
* </pre>
* </li>
* <li><code>DBTRC_TERM_F</code> set to <code>OK</code> to enable terminal logging
* <pre>
* DBTRC_TERM_F=OK node ...
* </pre>
* </li>
* </ul>
*/
class ConsoleLogger {
/**
* @param {string} moduleName the name of the module - something to represent the instance
*/
constructor (moduleName) {
this._module_name = moduleName.toString() || ''
this._sysLogger = null
this._terminalWriteEnabled = (
Object.prototype.hasOwnProperty.call(process.env, 'DBTRC_TERM_F') &&
process.env.DBTRC_TERM_F === 'OK'
)
if (
Object.prototype.hasOwnProperty.call(process.env, 'DBTRC_SYSLOG_F') &&
process.env.DBTRC_SYSLOG_F === 'OK'
) {
this._sysLogger = new SysLogger()
}
}
/**
* Do the actual logging.
* @param {string} loggerType
* @param {string} message
* @private
*/
_thisLogger (loggerType, message) {
if (this._sysLogger) {
this._sysLogger[loggerType]('[' + this._module_name + '] ' + message.toString())
}
if (!this._terminalWriteEnabled) {
return
}
let typeChalk = 'blue'
switch (loggerType.toLowerCase()) {
case 'error':
typeChalk = 'red'
break
case 'warn':
typeChalk = 'magenta'
break
case 'log':
typeChalk = 'yellow'
break
default:
break
}
console.log(chalk.bold[typeChalk]('[' + this._module_name + '] ') + message.toString())
}
/**
* Produce an error message.
* @param {string} logMessage
*/
error (logMessage) {
this._thisLogger('error', logMessage)
}
/**
* Produce a info message.
* @param {string} logMessage
*/
info (logMessage) {
this._thisLogger('info', logMessage)
}
/**
* Produce a warning message.
* @param {string} logMessage
*/
warn (logMessage) {
this._thisLogger('warn', logMessage)
}
/**
* Produce a log message.
* @param {string} logMessage
*/
log (logMessage) {
this._thisLogger('log', logMessage)
}
}
module.exports = ConsoleLogger
</code></pre>
</article>
</section>
</div>
<br class="clear">
<footer>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.2</a> on Sun Aug 04 2019 22:10:47 GMT+0200 (Central European Summer Time) using the Minami theme.
</footer>
<script>prettyPrint();</script>
<script src="scripts/linenumber.js"></script>
</body>
</html>