use in koa
import log4js from 'koa-log4';
// filter setup
app.use(log4js.koaLogger(log4js.getLogger('meili'), {
format: function(ctx, func) {
return func(`{
"userId": ":user-id",
"userType": 2,
"userNick": ":user-nick",
"traceId": ":trace-id",
"objectIds": "",
"objectType": "",
"operateType": "",
"beforeData": "",
"afterData": "",
"remarks": "",
"userIp": ":user-ip",
"userAgent": ":user-agent",
"referer": ":referrer",
"url": ":url",
"uri": ":uri",
"serverIp": ":server-ip",
"method": ":method",
"requestParams": ":requestParams"
}`);
},
level: 'auto',
nolog: '\\.(gif|jpe?g|png)$',
tokens: [
// 其他信息
{ token: ':requestParams', content: (ctx) => {
let content = {};
if (ctx.method === 'GET') {
content = ctx.query;
} else {
content = ctx.request.body;
}
return JSON.stringify(content).replace(/"/g, '\\"');
} },
{ token: ':user-id', content: (ctx) => { return ctx.state.userInfo.work_id || ''; } },
{ token: ':user-nick', content: (ctx) => { return ctx.state.userInfo.nick_name || ''; } },
{ token: ':user-ip', content: (ctx) => { return ctx.ip; } },
{ token: ':uri', content: (ctx) => { return ctx.path; } },
{ token: ':method', content: (ctx) => { return ctx.method; } },
{ token: ':server-ip', replacement: ip.address() },
{ token: ':trace-id', content: (ctx) => { return ctx.state.request_id || ''; } },
],
}));
// appender setup
// get appName and secretKey from
// http://crm.mogujie.org/actionlog/admin/index
// @see http://gitlab.mogujie.org/yefei/action-log
let appName = '******';
let secretKey = '******';
log4js.configure({
appenders: [
{
type: 'log4js-meili-appender',
category: 'meili',
appName,
secretKey,
},
],
});