Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
*/
// $ node agent_worker.js options
const options = JSON.parse(process.argv[2]);
if (options.require) {
// inject
options.require.forEach(mod => {
require(mod);
});
}
const debug = require('debug')('egg-cluster');
const gracefulExit = require('graceful-process');
const ConsoleLogger = require('egg-logger').EggConsoleLogger;
const consoleLogger = new ConsoleLogger({ level: process.env.EGG_AGENT_WORKER_LOGGER_LEVEL });
const Agent = require(options.framework).Agent;
debug('new Agent with options %j', options);
const agent = new Agent(options);
function startErrorHandler(err) {
consoleLogger.error(err);
consoleLogger.error('[agent_worker] start error, exiting with code:1');
process.exitCode = 1;
process.kill(process.pid);
}
agent.ready(err => {
// don't send started message to master when start error
if (err) return;
super();
this.options = parseOptions(options);
this.workerManager = new Manager();
this.messenger = new Messenger(this);
ready.mixin(this);
this.isProduction = isProduction();
this.agentWorkerIndex = 0;
this.closed = false;
this[REAL_PORT] = this.options.port;
this[PROTOCOL] = this.options.https ? 'https' : 'http';
// app started or not
this.isStarted = false;
this.logger = new ConsoleLogger({ level: process.env.EGG_MASTER_LOGGER_LEVEL || 'INFO' });
this.logMethod = 'info';
if (process.env.EGG_SERVER_ENV === 'local' || process.env.NODE_ENV === 'development') {
this.logMethod = 'debug';
}
// get the real framework info
const frameworkPath = this.options.framework;
const frameworkPkg = utility.readJSONSync(path.join(frameworkPath, 'package.json'));
this.log(`[master] =================== ${frameworkPkg.name} start =====================`);
this.logger.info(`[master] node version ${process.version}`);
/* istanbul ignore next */
if (process.alinode) this.logger.info(`[master] alinode version ${process.alinode}`);
this.logger.info(`[master] ${frameworkPkg.name} version ${frameworkPkg.version}`);
if (this.isProduction) {
'use strict';
// $ node app_worker.js options
const options = JSON.parse(process.argv[2]);
if (options.require) {
// inject
options.require.forEach(mod => {
require(mod);
});
}
const fs = require('fs');
const debug = require('debug')('egg-cluster');
const gracefulExit = require('graceful-process');
const ConsoleLogger = require('egg-logger').EggConsoleLogger;
const consoleLogger = new ConsoleLogger({
level: process.env.EGG_APP_WORKER_LOGGER_LEVEL,
});
const Application = require(options.framework).Application;
debug('new Application with options %j', options);
const app = new Application(options);
const clusterConfig = app.config.cluster || /* istanbul ignore next */ {};
const listenConfig = clusterConfig.listen || /* istanbul ignore next */ {};
const httpsOptions = Object.assign({}, clusterConfig.https, options.https);
const port = options.port = options.port || listenConfig.port;
const protocol = (httpsOptions.key && httpsOptions.cert) ? 'https' : 'http';
process.send({
to: 'master',
action: 'realport',
data: {
port,
'use strict';
import {DefaultLoggerManager, ILogger} from 'pandora-service-logger';
import {join} from 'path';
import {EOL} from 'os';
import mzFs = require('mz/fs');
const ConsoleLogger = require('egg-logger').EggConsoleLogger;
export const consoleLogger = new ConsoleLogger({
level: 'INFO',
});
let daemonLogger = null;
export function getPandoraLogsDir() {
const {logger: loggerConfig} = lazyGetGlobalConfig();
return loggerConfig.logsDir;
}
export function getDaemonLogger(): ILogger {
const {logger: loggerConfig} = lazyGetGlobalConfig();
if (!daemonLogger) {
const loggerManager = DefaultLoggerManager.getInstance();
daemonLogger = loggerManager.createLogger('daemon', {
...loggerConfig.daemonLogger,
/**
* @member {Object} EggCore#options
* @private
* @since 1.0.0
*/
this._options = this.options = options;
this.deprecate.property(this, '_options', 'app._options is deprecated, use app.options instead');
/**
* logging for EggCore, avoid using console directly
* @member {Logger} EggCore#console
* @private
* @since 1.0.0
*/
this.console = new EggConsoleLogger();
/**
* @member {BaseContextClass} EggCore#BaseContextClass
* @since 1.0.0
*/
this.BaseContextClass = BaseContextClass;
/**
* Base controller to be extended by controller in `app.controller`
* @class Controller
* @extends BaseContextClass
* @example
* class UserController extends app.Controller {}
*/
const Controller = this.BaseContextClass;