blob: 492794876103a374309193966e58960cb2fdc189 [file] [log] [blame]
/* Copyright (c) 2019 AT&T Intellectual Property. #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); #
# you may not use this file except in compliance with the License. #
# You may obtain a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
##############################################################################*/
const { createLogger, format, transports, addColors } = require('winston');
const { combine, timestamp, label, simple, colorize, splat, printf } = format;
const cluster = require('cluster');
const getLabel = function () {
if (cluster.isMaster) return 'OTF-master';
return 'OTF-worker-' + cluster.worker.id;
};
const config = {
levels: {
error: 0,
debug: 1,
warn: 2,
data: 3,
info: 4,
verbose: 5,
silly: 6,
custom: 7
},
colors: {
error: 'red',
debug: 'blue',
warn: 'yellow',
data: 'grey',
info: 'green',
verbose: 'cyan',
silly: 'magenta',
custom: 'yellow'
}
};
addColors(config.colors);
const logFormat = printf(info => {
return `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`;
});
const logger = module.exports = createLogger({
levels: config.levels,
format: combine(
label({ label: getLabel() }),
timestamp(),
splat(),
colorize(),
simple(),
logFormat
),
transports: [
new transports.Console()
],
level: 'custom'
});
module.exports = logger;