periodicjs
Version:
Periodic is a rapid enterprise application framework for data driven web and mobile applications.
150 lines (127 loc) • 5.58 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: lib/init/logger.js</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="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: lib/init/logger.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>'use strict';
const winston = require('winston');
const path = require('path');
function getDefaultWinstonLoggerConfig(options) {
try {
const { periodic, fileNamePathAddition, } = options;
return (periodic.environment === 'production') ? {
transports: [
new(winston.transports.Console)({
level: 'error',
colorize: true,
}),
new(winston.transports.File)({
filename: path.join(periodic.config.app_root, 'logs', fileNamePathAddition + '.exception-errors.log'),
}),
],
exitOnError: this.settings.logger.winston_exit_on_error,
handleExceptions: true,
} : {
transports: [
new(winston.transports.Console)({
colorize: true,
level: 'silly',
prettyPrint: true,
timestamp: true,
}),
new(winston.transports.File)({
filename: path.join(periodic.config.app_root, 'logs', fileNamePathAddition + '.app.log'),
}),
],
exitOnError: this.settings.logger.winston_exit_on_error,
exceptionHandlers: [
new(winston.transports.Console)({
colorize: true,
json: true,
prettyPrint: true,
timestamp: true,
}),
new(winston.transports.File)({
filename: path.join(periodic.config.app_root, 'logs', fileNamePathAddition + '.exception-errors.log'),
}),
],
handleExceptions: true,
};
} catch (e) {
this.logger.error(e);
return {};
}
};
/**
* configures winston
*
* @returns {Promise} configureLogger sets up winston
*/
function configureLogger() {
return new Promise((resolve, reject) => {
try {
const d = new Date();
const fileNamePathAddition = this.environment + '-' + d.getUTCFullYear() + '.' + (d.getUTCMonth() + 1) + '.' + d.getUTCDate();
if (this.settings.logger.use_winston_logger && this.environment !== 'DISABLELOG') {
const winstonLogger = new(winston.Logger)();
winstonLogger.exitOnError = this.settings.logger.winston_exit_on_error;
if (this.settings.logger.use_standard_logging) {
winstonLogger.configure(getDefaultWinstonLoggerConfig.call(this,{
fileNamePathAddition,
periodic: this,
}));
}
this.logger = winstonLogger;
}
resolve(true);
} catch (e) {
reject(e);
}
});
}
function catchProcessErrors(options) {
const catchProcess = options.process || process;
return new Promise((resolve, reject) => {
try {
if (!this.logger) this.logger = console;
catchProcess.on('uncaughtException', this.logger.error.bind(this.logger));
catchProcess.on('warning', this.logger.warn.bind(this.logger));
catchProcess.on('unhandledRejection', this.logger.error.bind(this.logger));
resolve(this.config);
} catch (e) {
reject(e);
}
});
}
module.exports = {
configureLogger,
catchProcessErrors,
getDefaultWinstonLoggerConfig,
};</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-periodic.html">periodic</a></li></ul><h3>Classes</h3><ul><li><a href="Periodic.html">Periodic</a></li><li><a href="Periodic.Periodic.html">Periodic</a></li></ul><h3>Global</h3><ul><li><a href="global.html#_admin_prefix">_admin_prefix</a></li><li><a href="global.html#_manifest_prefix">_manifest_prefix</a></li><li><a href="global.html#_route_prefix">_route_prefix</a></li><li><a href="global.html#all_prefixes">all_prefixes</a></li><li><a href="global.html#configRuntimeEnvironment">configRuntimeEnvironment</a></li><li><a href="global.html#configureLogger">configureLogger</a></li><li><a href="global.html#configureLowkie">configureLowkie</a></li><li><a href="global.html#configureMongoose">configureMongoose</a></li><li><a href="global.html#configureSequelize">configureSequelize</a></li><li><a href="global.html#configureViews">configureViews</a></li><li><a href="global.html#endTimer">endTimer</a></li><li><a href="global.html#formatResponse">formatResponse</a></li><li><a href="global.html#getEnv">getEnv</a></li><li><a href="global.html#handler">handler</a></li><li><a href="global.html#initializeExpress">initializeExpress</a></li><li><a href="global.html#loadConfiguration">loadConfiguration</a></li><li><a href="global.html#setAppRunningEnv">setAppRunningEnv</a></li><li><a href="global.html#setUpFolderStructure">setUpFolderStructure</a></li><li><a href="global.html#startTimer">startTimer</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Jul 18 2018 23:08:12 GMT-0400 (Eastern Daylight Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>