var log4js = require('log4js');
const Koa = require('koa');
const route = require('koa-route');
const app = new Koa();
//获取当前时间
function getFileName() {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
}
log4js.configure({
appenders: {
// infos: {
// type: 'file',
// level: 'INFO',
// filename: 'infos.log'
// },
// infos_02: {
// type: 'file',
// filename: 'infos_02.log',
// },
// errors: {
// type: 'file',
// model: 'errorLogger',
// filename: 'errors.log'
// },
hello: {
type: 'file',
level: 'ERROR',
model: 'logger',
filename: `./${getFileName()}.log`,// 使用年月日作为日志文件名
// model:0o400,
alwaysIncludePattern: true
}
},
categories: {
default: {appenders:['hello'],level:'info'}, // 低于默认级别的日志将不会输出,所以这里我选择info,假如这里选择warn级别那么info将不会输出
// infos: {appenders: ['infos', 'infos_02'], level: 'info'},
// errors: {appenders: ['errors'], level: 'error'},
}
});
// var logger = log4js.getLogger('isSuccess'); // 修改默认的default输出的文案
// var errorLogger = log4js.getLogger('isError'); // 修改默认的default输出的文案
var logger = log4js.getLogger('hello-world'); // 修改默认的default输出的文案
function getMessage(ctx) {
const agent = ctx.request.header['user-agent'];
const host = ctx.request.header.host;
const method = ctx.request.method;
const url = ctx.request.url;
return host + ' ' + method + ' ' + url + ' ' + agent;
}
// 实际应用中可以通过code或者status来区分logger的类型 info?error?warn?...等
const main = ctx => {
ctx.response.body = 'Hello World';
// 获取浏览器信息
let message = getMessage(ctx);
logger.info(message);
};
const about = ctx => {
ctx.response.body = 'Hello World';
// 获取浏览器信息
let message = getMessage(ctx);
logger.error(message);
// errorLogger.error(message);
};
app.use(route.get('/', main));
app.use(route.get('/about', about));
app.listen(9898);
// 目前还没有想到好的办法让不同类型的logger输出入不同的文件中