egg-logger
Advanced tools
Comparing version 2.1.0 to 2.2.0
2.2.0 / 2018-12-17 | ||
================== | ||
**features** | ||
* [[`d578857`](http://github.com/eggjs/egg-logger/commit/d57885737c4311f17a76713abcd5459523ff92a4)] - feat: support concentrateError and set default to duplicate (#38) (TZ | 天猪 <<atian25@qq.com>>) | ||
2.1.0 / 2018-12-07 | ||
@@ -3,0 +9,0 @@ ================== |
@@ -63,6 +63,4 @@ interface ILoggerLevel { | ||
* @param {Logger} logger - target logger instance | ||
* @param {Object} [options] - opts | ||
* @param {Boolean} [options.duplicate] - whether write to both loggers | ||
*/ | ||
redirect(level: LoggerLevel, logger: Logger, options?: { duplicate?: boolean }): void; | ||
redirect(level: LoggerLevel, logger: Logger): void; | ||
@@ -76,2 +74,15 @@ /** | ||
/** | ||
* Duplicate specify level log to the other logger | ||
* @param {String} level - log level | ||
* @param {Logger} logger - target logger instance | ||
*/ | ||
duplicate(level: LoggerLevel, logger: Logger): void; | ||
/** | ||
* Un-duplicate specify level log | ||
* @param {String} level - log level | ||
*/ | ||
unduplicate(level: LoggerLevel): void; | ||
/** | ||
* Reload all transports | ||
@@ -125,2 +136,4 @@ */ | ||
eol?: string; | ||
// whether write error logger to common-error.log, `duplicate` / `redirect` / `ignore`, default to `duplicate` | ||
concentrateError?: 'duplicate' | 'redirect' | 'ignore'; | ||
} | ||
@@ -127,0 +140,0 @@ |
@@ -26,2 +26,3 @@ 'use strict'; | ||
* - {String} [eol] - end of line char | ||
* - {String} [concentrateError] - whether write error logger to common-error.log, `duplicate` / `redirect` / `ignore` | ||
*/ | ||
@@ -28,0 +29,0 @@ constructor(options) { |
@@ -25,2 +25,3 @@ 'use strict'; | ||
errorLogName: '', | ||
concentrateError: 'duplicate', | ||
}; | ||
@@ -51,2 +52,3 @@ | ||
* - {String} eol - end of line char | ||
* - {String} [concentrateError = duplicate] - whether write error logger to common-error.log, `duplicate` / `redirect` / `ignore` | ||
* - customLogger | ||
@@ -128,3 +130,14 @@ */ | ||
if (name !== 'errorLogger') { | ||
logger.redirect('error', this.errorLogger); | ||
switch (logger.options.concentrateError) { | ||
case 'duplicate': | ||
logger.duplicate('error', this.errorLogger); | ||
break; | ||
case 'redirect': | ||
logger.redirect('error', this.errorLogger); | ||
break; | ||
case 'ignore': | ||
break; | ||
default: | ||
break; | ||
} | ||
} | ||
@@ -131,0 +144,0 @@ this[name] = logger; |
@@ -37,2 +37,3 @@ 'use strict'; | ||
this.redirectLoggers = new Map(); | ||
this.duplicateLoggers = new Map(); | ||
} | ||
@@ -60,3 +61,3 @@ | ||
* Send log to all transports. | ||
* It's proxy to {@link Transport}'s log method.' | ||
* It's proxy to {@link Transport}'s log method. | ||
* @param {String} level - log level | ||
@@ -67,6 +68,11 @@ * @param {Array} args - log arguments | ||
log(level, args, meta) { | ||
const target = this.redirectLoggers.get(level); | ||
if (target) { | ||
target.logger.log(level, args, meta); | ||
if (!target.options || !target.options.duplicate) return; | ||
let logger = this.duplicateLoggers.get(level); | ||
if (logger) { | ||
logger.log(level, args, meta); | ||
} else { | ||
logger = this.redirectLoggers.get(level); | ||
if (logger) { | ||
logger.log(level, args, meta); | ||
return; | ||
} | ||
} | ||
@@ -96,9 +102,7 @@ | ||
* @param {Logger} logger - target logger instance | ||
* @param {Object} [options] - opts | ||
* @param {Boolean} [options.duplicate] - whether write to both loggers | ||
*/ | ||
redirect(level, logger, options) { | ||
redirect(level, logger) { | ||
level = level.toUpperCase(); | ||
if (!this.redirectLoggers.has(level) && logger instanceof Logger) { | ||
this.redirectLoggers.set(level, { logger, options }); | ||
this.redirectLoggers.set(level, logger); | ||
} | ||
@@ -117,2 +121,23 @@ } | ||
/** | ||
* Duplicate specify level log to the other logger | ||
* @param {String} level - log level | ||
* @param {Logger} logger - target logger instance | ||
*/ | ||
duplicate(level, logger) { | ||
level = level.toUpperCase(); | ||
if (!this.duplicateLoggers.has(level) && logger instanceof Logger) { | ||
this.duplicateLoggers.set(level, logger); | ||
} | ||
} | ||
/** | ||
* Un-duplicate specify level log | ||
* @param {String} level - log level | ||
*/ | ||
unduplicate(level) { | ||
level = level.toUpperCase(); | ||
this.duplicateLoggers.delete(level); | ||
} | ||
/** | ||
* Reload all transports | ||
@@ -119,0 +144,0 @@ */ |
{ | ||
"name": "egg-logger", | ||
"version": "2.1.0", | ||
"version": "2.2.0", | ||
"description": "egg logger", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -72,15 +72,17 @@ # egg-logger | ||
### Redirect | ||
### Duplicate | ||
Redirect error log to other logger. | ||
Duplicate error log to other logger. | ||
```js | ||
logger.redirect('error', errorLogger); | ||
logger.error(new Error('print to errorLogger')); // equal to `errorLogger.error` | ||
logger.duplicate('error', errorLogger); | ||
logger.error(new Error('print to errorLogger')); // will additional call `errorLogger.error` | ||
``` | ||
Write to both loggers: | ||
### Redirect | ||
Redirect special level log to other logger. | ||
```js | ||
logger.redirect('error', errorLogger, { duplicate: true }); | ||
oneLogger.redirect('debug', debugLogger); // all debug level logs of `oneLogger` will delegate to debugLogger | ||
``` | ||
@@ -87,0 +89,0 @@ |
@@ -73,15 +73,17 @@ # egg-logger | ||
### 重定向日志 | ||
### 汇集日志 | ||
可以将日志重定向到指定的日志对象 | ||
可以把日志复制一份到指定的日志对象 | ||
```js | ||
logger.redirect('error', errorLogger); | ||
logger.error(new Error('print to errorLogger')); // 等价于调用 errorLogger.error | ||
logger.duplicate('error', errorLogger); | ||
logger.error(new Error('print to errorLogger')); // 会多调用一次 `errorLogger.error` | ||
``` | ||
也支持日志双写 | ||
### 重定向日志 | ||
可以将日志重定向到指定的日志对象 | ||
```js | ||
logger.redirect('error', errorLogger, { duplicate: true }); | ||
oneLogger.redirect('debug', debugLogger); // oneLogger 的调试日志将被 debugLogger 接管,输出过去。 | ||
``` | ||
@@ -88,0 +90,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
47256
1217
121