我希望能够很好地忽略特定路线的记录,因为亚马逊每隔几秒就会检查一次健康检查路线 - 这只会给我们的日志增加噪音。
我是否可以为好的插件设置特定于路由的配置,以便它只忽略一条特定的路由?
答案 0 :(得分:3)
有可能做到。这是文档https://github.com/hapijs/good/blob/master/API.md#stream-transforms-using-plugin-configs
Hapi路线配置
var routeConfig = {
plugins: {
good: {
suppressResponseEvent: true
}
}
};
server.route({
method: '*',
path: '/suscribe/{path*}',
handler: function(req, rep){
rep("OK!");
},
config: routeConfig
});
为良好创建自定义过滤器。您需要创建一个新的npm包。 对于此示例,我们将其命名为 good-filter 遵循https://github.com/hapijs/good-squeeze/的架构 主文件(index.js)包含:
'use strict';
module.exports = {
Filter: require("./filter.js")
};
加载良好时,此套餐必须可用。 以下代码进入 good-filter 包中的 filter.js 。
'use strict';
const Stream = require('stream');
class Filter extends Stream.Transform {
constructor(options) {
options = Object.assign({}, options, {
objectMode: true
});
super(options);
}
_transform(data, enc, next) {
if (data.event === 'response' && data.config.suppressResponseEvent === true) {
return next();
}
return next(null, data);
}
}
module.exports = Filter;
最后,将您的过滤器添加到良好配置中。
const options = {
ops: {
interval: 1000
},
reporters: {
myConsoleReporter: [{
module: 'good-squeeze',
name: 'Squeeze',
args: [{ log: '*', response: '*' }]
},
{
module: 'good-filter',
name: 'Filter',
args: [{ log: '*', response: '*' }]
},
{
module: 'good-console'
}, 'stdout']
}
};
答案 1 :(得分:3)
这至少与hapi
16.1,good
7.1和good-squeeze
5.0一致。我们的想法是标记运行状况检查路由的日志记录,然后使用good-squeeze
排除该路由。
配置good
/ good-squeeze
以排除“health
”:
server.register({
register: Good,
options: {
reporters: {
console: [
{
module: 'good-squeeze',
name: 'Squeeze',
args: [
{
// keep health checks from appearing in logs
response: { exclude: 'health' },
log: '*',
},
],
},
{
module: 'good-console',
},
'stdout',
],
},
},
});
然后标记您的路线:
server.route({
method: 'GET',
path: '/admin/ok',
handler: (request, reply) => reply('ok'),
config: {
tags: ['health'],
},
});
答案 2 :(得分:0)
我认为您正在考虑忽略{I} {0}}日志记录,据我所知,该日志记录不可配置。对于其他日志记录,您可以通过使用标记来过滤事件。
以下内容:
response
生成以下输出:
var someData = {foo:'bar'};
request.log('myTag', someData);
以下150928/224019.555, [request,myTag], data: {"foo":"bar"}
选项会选择这个:
good