123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.addTransport = addTransport;
- exports.configureLogger = configureLogger;
- exports.logger = exports.default = void 0;
- exports.removeTransport = removeTransport;
- var _winston = _interopRequireWildcard(require("winston"));
- var _fs = _interopRequireDefault(require("fs"));
- var _path = _interopRequireDefault(require("path"));
- var _winstonDailyRotateFile = _interopRequireDefault(require("winston-daily-rotate-file"));
- var _lodash = _interopRequireDefault(require("lodash"));
- var _defaults = _interopRequireDefault(require("../../defaults"));
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
- const logger = exports.logger = _winston.default.createLogger();
- function configureTransports(options) {
- const transports = [];
- if (options) {
- const silent = options.silent;
- delete options.silent;
- try {
- if (!_lodash.default.isNil(options.dirname)) {
- const parseServer = new _winstonDailyRotateFile.default(Object.assign({
- filename: 'parse-server.info',
- json: true,
- format: _winston.format.combine(_winston.format.timestamp(), _winston.format.splat(), _winston.format.json())
- }, options));
- parseServer.name = 'parse-server';
- transports.push(parseServer);
- const parseServerError = new _winstonDailyRotateFile.default(Object.assign({
- filename: 'parse-server.err',
- json: true,
- format: _winston.format.combine(_winston.format.timestamp(), _winston.format.splat(), _winston.format.json())
- }, options, {
- level: 'error'
- }));
- parseServerError.name = 'parse-server-error';
- transports.push(parseServerError);
- }
- } catch (e) {
- /* */
- }
- const consoleFormat = options.json ? _winston.format.json() : _winston.format.simple();
- const consoleOptions = Object.assign({
- colorize: true,
- name: 'console',
- silent,
- format: _winston.format.combine(_winston.format.splat(), consoleFormat)
- }, options);
- transports.push(new _winston.default.transports.Console(consoleOptions));
- }
- logger.configure({
- transports
- });
- }
- function configureLogger({
- logsFolder = _defaults.default.logsFolder,
- jsonLogs = _defaults.default.jsonLogs,
- logLevel = _winston.default.level,
- verbose = _defaults.default.verbose,
- silent = _defaults.default.silent,
- maxLogFiles
- } = {}) {
- if (verbose) {
- logLevel = 'verbose';
- }
- _winston.default.level = logLevel;
- const options = {};
- if (logsFolder) {
- if (!_path.default.isAbsolute(logsFolder)) {
- logsFolder = _path.default.resolve(process.cwd(), logsFolder);
- }
- try {
- _fs.default.mkdirSync(logsFolder);
- } catch (e) {
- /* */
- }
- }
- options.dirname = logsFolder;
- options.level = logLevel;
- options.silent = silent;
- options.maxFiles = maxLogFiles;
- if (jsonLogs) {
- options.json = true;
- options.stringify = true;
- }
- configureTransports(options);
- }
- function addTransport(transport) {
- // we will remove the existing transport
- // before replacing it with a new one
- removeTransport(transport.name);
- logger.add(transport);
- }
- function removeTransport(transport) {
- const matchingTransport = logger.transports.find(t1 => {
- return typeof transport === 'string' ? t1.name === transport : t1 === transport;
- });
- if (matchingTransport) {
- logger.remove(matchingTransport);
- }
- }
- var _default = exports.default = logger;
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luc3RvbiIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9mcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcGF0aCIsIl93aW5zdG9uRGFpbHlSb3RhdGVGaWxlIiwiX2xvZGFzaCIsIl9kZWZhdWx0cyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImxvZ2dlciIsImV4cG9ydHMiLCJ3aW5zdG9uIiwiY3JlYXRlTG9nZ2VyIiwiY29uZmlndXJlVHJhbnNwb3J0cyIsIm9wdGlvbnMiLCJ0cmFuc3BvcnRzIiwic2lsZW50IiwiXyIsImlzTmlsIiwiZGlybmFtZSIsInBhcnNlU2VydmVyIiwiRGFpbHlSb3RhdGVGaWxlIiwiYXNzaWduIiwiZmlsZW5hbWUiLCJqc29uIiwiZm9ybWF0IiwiY29tYmluZSIsInRpbWVzdGFtcCIsInNwbGF0IiwibmFtZSIsInB1c2giLCJwYXJzZVNlcnZlckVycm9yIiwibGV2ZWwiLCJjb25zb2xlRm9ybWF0Iiwic2ltcGxlIiwiY29uc29sZU9wdGlvbnMiLCJjb2xvcml6ZSIsIkNvbnNvbGUiLCJjb25maWd1cmUiLCJjb25maWd1cmVMb2dnZXIiLCJsb2dzRm9sZGVyIiwiZGVmYXVsdHMiLCJqc29uTG9ncyIsImxvZ0xldmVsIiwidmVyYm9zZSIsIm1heExvZ0ZpbGVzIiwicGF0aCIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwicHJvY2VzcyIsImN3ZCIsImZzIiwibWtkaXJTeW5jIiwibWF4RmlsZXMiLCJzdHJpbmdpZnkiLCJhZGRUcmFuc3BvcnQiLCJ0cmFuc3BvcnQiLCJyZW1vdmVUcmFuc3BvcnQiLCJhZGQiLCJtYXRjaGluZ1RyYW5zcG9ydCIsImZpbmQiLCJ0MSIsInJlbW92ZSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0xvZ2dlci9XaW5zdG9uTG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB3aW5zdG9uLCB7IGZvcm1hdCB9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IERhaWx5Um90YXRlRmlsZSBmcm9tICd3aW5zdG9uLWRhaWx5LXJvdGF0ZS1maWxlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vLi4vZGVmYXVsdHMnO1xuXG5jb25zdCBsb2dnZXIgPSB3aW5zdG9uLmNyZWF0ZUxvZ2dlcigpO1xuXG5mdW5jdGlvbiBjb25maWd1cmVUcmFuc3BvcnRzKG9wdGlvbnMpIHtcbiAgY29uc3QgdHJhbnNwb3J0cyA9IFtdO1xuICBpZiAob3B0aW9ucykge1xuICAgIGNvbnN0IHNpbGVudCA9IG9wdGlvbnMuc2lsZW50O1xuICAgIGRlbGV0ZSBvcHRpb25zLnNpbGVudDtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIV8uaXNOaWwob3B0aW9ucy5kaXJuYW1lKSkge1xuICAgICAgICBjb25zdCBwYXJzZVNlcnZlciA9IG5ldyBEYWlseVJvdGF0ZUZpbGUoXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmlsZW5hbWU6ICdwYXJzZS1zZXJ2ZXIuaW5mbycsXG4gICAgICAgICAgICAgIGpzb246IHRydWUsXG4gICAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoZm9ybWF0LnRpbWVzdGFtcCgpLCBmb3JtYXQuc3BsYXQoKSwgZm9ybWF0Lmpzb24oKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcGFyc2VTZXJ2ZXIubmFtZSA9ICdwYXJzZS1zZXJ2ZXInO1xuICAgICAgICB0cmFuc3BvcnRzLnB1c2gocGFyc2VTZXJ2ZXIpO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlU2VydmVyRXJyb3IgPSBuZXcgRGFpbHlSb3RhdGVGaWxlKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpbGVuYW1lOiAncGFyc2Utc2VydmVyLmVycicsXG4gICAgICAgICAgICAgIGpzb246IHRydWUsXG4gICAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoZm9ybWF0LnRpbWVzdGFtcCgpLCBmb3JtYXQuc3BsYXQoKSwgZm9ybWF0Lmpzb24oKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHsgbGV2ZWw6ICdlcnJvcicgfVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcGFyc2VTZXJ2ZXJFcnJvci5uYW1lID0gJ3BhcnNlLXNlcnZlci1lcnJvcic7XG4gICAgICAgIHRyYW5zcG9ydHMucHVzaChwYXJzZVNlcnZlckVycm9yKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiAqL1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnNvbGVGb3JtYXQgPSBvcHRpb25zLmpzb24gPyBmb3JtYXQuanNvbigpIDogZm9ybWF0LnNpbXBsZSgpO1xuICAgIGNvbnN0IGNvbnNvbGVPcHRpb25zID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgY29sb3JpemU6IHRydWUsXG4gICAgICAgIG5hbWU6ICdjb25zb2xlJyxcbiAgICAgICAgc2lsZW50LFxuICAgICAgICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKGZvcm1hdC5zcGxhdCgpLCBjb25zb2xlRm9ybWF0KSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIHRyYW5zcG9ydHMucHVzaChuZXcgd2luc3Rvbi50cmFuc3BvcnRzLkNvbnNvbGUoY29uc29sZU9wdGlvbnMpKTtcbiAgfVxuXG4gIGxvZ2dlci5jb25maWd1cmUoe1xuICAgIHRyYW5zcG9ydHMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlTG9nZ2VyKHtcbiAgbG9nc0ZvbGRlciA9IGRlZmF1bHRzLmxvZ3NGb2xkZXIsXG4gIGpzb25Mb2dzID0gZGVmYXVsdHMuanNvbkxvZ3MsXG4gIGxvZ0xldmVsID0gd2luc3Rvbi5sZXZlbCxcbiAgdmVyYm9zZSA9IGRlZmF1bHRzLnZlcmJvc2UsXG4gIHNpbGVudCA9IGRlZmF1bHRzLnNpbGVudCxcbiAgbWF4TG9nRmlsZXMsXG59ID0ge30pIHtcbiAgaWYgKHZlcmJvc2UpIHtcbiAgICBsb2dMZXZlbCA9ICd2ZXJib3NlJztcbiAgfVxuXG4gIHdpbnN0b24ubGV2ZWwgPSBsb2dMZXZlbDtcbiAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gIGlmIChsb2dzRm9sZGVyKSB7XG4gICAgaWYgKCFwYXRoLmlzQWJzb2x1dGUobG9nc0ZvbGRlcikpIHtcbiAgICAgIGxvZ3NGb2xkZXIgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbG9nc0ZvbGRlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBmcy5ta2RpclN5bmMobG9nc0ZvbGRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLyogKi9cbiAgICB9XG4gIH1cbiAgb3B0aW9ucy5kaXJuYW1lID0gbG9nc0ZvbGRlcjtcbiAgb3B0aW9ucy5sZXZlbCA9IGxvZ0xldmVsO1xuICBvcHRpb25zLnNpbGVudCA9IHNpbGVudDtcbiAgb3B0aW9ucy5tYXhGaWxlcyA9IG1heExvZ0ZpbGVzO1xuXG4gIGlmIChqc29uTG9ncykge1xuICAgIG9wdGlvbnMuanNvbiA9IHRydWU7XG4gICAgb3B0aW9ucy5zdHJpbmdpZnkgPSB0cnVlO1xuICB9XG4gIGNvbmZpZ3VyZVRyYW5zcG9ydHMob3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRUcmFuc3BvcnQodHJhbnNwb3J0KSB7XG4gIC8vIHdlIHdpbGwgcmVtb3ZlIHRoZSBleGlzdGluZyB0cmFuc3BvcnRcbiAgLy8gYmVmb3JlIHJlcGxhY2luZyBpdCB3aXRoIGEgbmV3IG9uZVxuICByZW1vdmVUcmFuc3BvcnQodHJhbnNwb3J0Lm5hbWUpO1xuXG4gIGxvZ2dlci5hZGQodHJhbnNwb3J0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRyYW5zcG9ydCh0cmFuc3BvcnQpIHtcbiAgY29uc3QgbWF0Y2hpbmdUcmFuc3BvcnQgPSBsb2dnZXIudHJhbnNwb3J0cy5maW5kKHQxID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIHRyYW5zcG9ydCA9PT0gJ3N0cmluZycgPyB0MS5uYW1lID09PSB0cmFuc3BvcnQgOiB0MSA9PT0gdHJhbnNwb3J0O1xuICB9KTtcblxuICBpZiAobWF0Y2hpbmdUcmFuc3BvcnQpIHtcbiAgICBsb2dnZXIucmVtb3ZlKG1hdGNoaW5nVHJhbnNwb3J0KTtcbiAgfVxufVxuXG5leHBvcnQgeyBsb2dnZXIgfTtcbmV4cG9ydCBkZWZhdWx0IGxvZ2dlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsR0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksdUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUFzQyxTQUFBRSx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLHlC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Q0FBQ3FCLEtBQUssR0FBR1csUUFBUTtFQUN4QixNQUFNN0IsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUVsQixJQUFJMEIsVUFBVSxFQUFFO0lBQ2QsSUFBSSxDQUFDTSxhQUFJLENBQUNDLFVBQVUsQ0FBQ1AsVUFBVSxDQUFDLEVBQUU7TUFDaENBLFVBQVUsR0FBR00sYUFBSSxDQUFDRSxPQUFPLENBQUNDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRVYsVUFBVSxDQUFDO0lBQ3REO0lBQ0EsSUFBSTtNQUNGVyxXQUFFLENBQUNDLFNBQVMsQ0FBQ1osVUFBVSxDQUFDO0lBQzFCLENBQUMsQ0FBQyxPQUFPbkQsQ0FBQyxFQUFFO01BQ1Y7SUFBQTtFQUVKO0VBQ0F5QixPQUFPLENBQUNLLE9BQU8sR0FBR3FCLFVBQVU7RUFDNUIxQixPQUFPLENBQUNrQixLQUFLLEdBQUdXLFFBQVE7RUFDeEI3QixPQUFPLENBQUNFLE1BQU0sR0FBR0EsTUFBTTtFQUN2QkYsT0FBTyxDQUFDdUMsUUFBUSxHQUFHUixXQUFXO0VBRTlCLElBQUlILFFBQVEsRUFBRTtJQUNaNUIsT0FBTyxDQUFDVSxJQUFJLEdBQUcsSUFBSTtJQUNuQlYsT0FBTyxDQUFDd0MsU0FBUyxHQUFHLElBQUk7RUFDMUI7RUFDQXpDLG1CQUFtQixDQUFDQyxPQUFPLENBQUM7QUFDOUI7QUFFTyxTQUFTeUMsWUFBWUEsQ0FBQ0MsU0FBUyxFQUFFO0VBQ3RDO0VBQ0E7RUFDQUMsZUFBZSxDQUFDRCxTQUFTLENBQUMzQixJQUFJLENBQUM7RUFFL0JwQixNQUFNLENBQUNpRCxHQUFHLENBQUNGLFNBQVMsQ0FBQztBQUN2QjtBQUVPLFNBQVNDLGVBQWVBLENBQUNELFNBQVMsRUFBRTtFQUN6QyxNQUFNRyxpQkFBaUIsR0FBR2xELE1BQU0sQ0FBQ00sVUFBVSxDQUFDNkMsSUFBSSxDQUFDQyxFQUFFLElBQUk7SUFDckQsT0FBTyxPQUFPTCxTQUFTLEtBQUssUUFBUSxHQUFHSyxFQUFFLENBQUNoQyxJQUFJLEtBQUsyQixTQUFTLEdBQUdLLEVBQUUsS0FBS0wsU0FBUztFQUNqRixDQUFDLENBQUM7RUFFRixJQUFJRyxpQkFBaUIsRUFBRTtJQUNyQmxELE1BQU0sQ0FBQ3FELE1BQU0sQ0FBQ0gsaUJBQWlCLENBQUM7RUFDbEM7QUFDRjtBQUFDLElBQUFJLFFBQUEsR0FBQXJELE9BQUEsQ0FBQW5CLE9BQUEsR0FHY2tCLE1BQU0iLCJpZ25vcmVMaXN0IjpbXX0=
|