Security News
The Unpaid Backbone of Open Source: Solo Maintainers Face Increasing Security Demands
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
egg-json-logger-wrapper
Advanced tools
JSON 化输出logger, 使用 阿里云日志服务 => LogStore => 采集日志 => 文本格式日志 => JSON模式
JSON 化输出logger, 使用 阿里云日志服务 => LogStore => 采集日志 => 文本格式日志 => JSON模式
$ npm i egg-json-logger --save
// {app_root}/config/plugin.js
exports.logger = {
enable: true,
package: 'egg-json-logger',
};
//由于暂时无法 在插件扩展的 extend.js 里覆盖egg内置extend的属性(logger),
//只能具体服务里的extend.js里覆盖
// {app_root}/app/extend/context.js
module.exports = {
get logger() {
return this.jsonLogger
},
get coreLogger() {
return this.jsonLogger
}
}
this.logger = ctx.logger + 文件pathName + ctx.meta(reqid/uid/use)
this.logger.info('日志的关键字', '日志的内容1', '日志的内容2'...)
ctx.logger.info('[middlewave.中间件文件名称]', '日志的关键字', '日志的内容1', '日志的内容2'...)
app.logger.info('[middlewave.中间件文件名称]', '日志的关键字', '日志的内容1', '日志的内容2'...)
app.logger.info('[model.模型文件名称]', '日志的关键字', '日志的内容1', '日志的内容2'...)
app.logger.info('[任何from]', '日志的关键字', '日志的内容1', '日志的内容2'...)
// {app_root}/config/config.default.js
exports.logger = {
// 在 已有的 logger 扩展配置参数,以下是默认的扩展参数
// 忽略 request/reponse 日志的路由, 用于过滤存活检测/静态资源等路由, 支持字符和正则
ingore: ['/', /.+\.{html|css|js}/],
//以下两个参数必须至少有一个为 true
//是否输入扁平化JSON的日志, 默认不输出
flattenr: false,
//是否序列化输出,默认输出
stringify: true,
event: {
// 是否输出 request/reponse/error 事件日志
request: true,
response: true,
error: true,
},
};
//request event log
{
level: 'INFO',
date: '2018-08-08 16:00:43',
pid: 6535,
hostname: 'MokdeMacBook-Pro.local',
from: 'request',
//请求贯穿整条线
reqid: '403229b7-84f0-454d-a906-a09992ea6ada',
ip: '127.0.0.1',
origin: 'http://127.0.0.1:7001',
host: '127.0.0.1:7001',
method: 'GET',
path: '/index/123',
url: '/index/123?key=123',
//三种参数位置都会打印
body: {},
query: { key: '123' },
params: {},
//有内容的会被展开
'query.key': '123'
}
//controller/service log
this.logger.info('massage', {obj: 123}, [{arroy: 123}])
{
level: 'INFO',
date: '2018-08-08 16:00:43',
pid: 6535,
hostname: 'MokdeMacBook-Pro.local',
from: 'controller.home',
log1: 'massage',
//string化的 和 扁平化的对象形式
log2: { obj: 123 },
'log2.obj': 123,
log3: [ { arroy: 123 } ],
'log3.0.arroy': 123,
reqid: '403229b7-84f0-454d-a906-a09992ea6ada',
uid: '',
use: 8
}
{
level: 'DEBUG',
date: '2018-08-08 16:00:43',
pid: 6535,
hostname: 'MokdeMacBook-Pro.local',
from: 'controller.home',
log1: 'massage',
'log2.obj': 123,
log2: { obj: 123 },
'log3.0.arroy': 123,
log3: [ { arroy: 123 } ],
reqid: '403229b7-84f0-454d-a906-a09992ea6ada',
uid: '',
use: 8
}
//error event log
{
"level": "ERROR",
"date": "2018-08-13 18:50:11",
"pid": 6629,
"hostname": "MokdeMacBook-Pro.local",
"from": "error",
"reqid": "a24c82dd-b58b-4652-ad70-395598e773d9",
"ip": "127.0.0.1",
"origin": "http://127.0.0.1:7001",
"host": "127.0.0.1:7001",
"method": "GET",
"path": "/index/123",
"url": "/index/123?key=123",
"body": {},
"query": {"key": "123"},
"params": {"abc": "123"},
"error": {
"name": "Error",
"message": "ReferenceError: hi is not defined",
"stack": "Error ReferenceError hi is not defined at getErrorJson (/Users/mok/Desktop/x-standard/node_modules/egg-json-logger/lib/util.js 33 13) at Application.app.on (/Users/mok/Desktop/x-standard/node_modules/egg-json-logger/app.js 29 20) at emitTwo (events.js 131 20) at Application.emit (events.js 214 7) at /Users/mok/Desktop/x-standard/node_modules/egg-ecarx-interface/app/middleware/interface.js 29 17 at _combinedTickCallback (internal/process/next_tick.js 131 7) at process._tickCallback (internal/process/next_tick.js 180 9)"
},
"query.key": "123",
"params.abc": "123",
"error.name": "Error",
"error.message": "ReferenceError: hi is not defined",
"error.stack": "Error ReferenceError hi is not defined at getErrorJson (/Users/mok/Desktop/x-standard/node_modules/egg-json-logger/lib/util.js 33 13) at Application.app.on (/Users/mok/Desktop/x-standard/node_modules/egg-json-logger/app.js 29 20) at emitTwo (events.js 131 20) at Application.emit (events.js 214 7) at /Users/mok/Desktop/x-standard/node_modules/egg-ecarx-interface/app/middleware/interface.js 29 17 at _combinedTickCallback (internal/process/next_tick.js 131 7) at process._tickCallback (internal/process/next_tick.js 180 9)"
}
// response event log
{
level: 'WARN',
date: '2018-08-08 16:00:43',
pid: 6535,
hostname: 'MokdeMacBook-Pro.local',
from: 'response',
reqid: '403229b7-84f0-454d-a906-a09992ea6ada',
uid: '',
use: 15,
ip: '127.0.0.1',
host: '127.0.0.1:7001',
origin: 'http://127.0.0.1:7001',
method: 'GET',
path: '/index/123',
url: '/index/123?key=123',
body: {},
query: { key: '123' },
params: { abc: '123' },
'query.key': '123',
'params.abc': '123',
response: {
success: false,
code: 500,
message: 'hi is not defined',
data: ''
}
'response.success': false,
'response.code': 500,
'response.message': 'hi is not defined',
'response.data': ''
}
FAQs
JSON 化输出logger, 使用 阿里云日志服务 => LogStore => 采集日志 => 文本格式日志 => JSON模式
The npm package egg-json-logger-wrapper receives a total of 0 weekly downloads. As such, egg-json-logger-wrapper popularity was classified as not popular.
We found that egg-json-logger-wrapper demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Security News
License exceptions modify the terms of open source licenses, impacting how software can be used, modified, and distributed. Developers should be aware of the legal implications of these exceptions.
Security News
A developer is accusing Tencent of violating the GPL by modifying a Python utility and changing its license to BSD, highlighting the importance of copyleft compliance.