2013-05-17 74 views

回答

1

我還沒有找到一個簡單的方法來做到這一點,但我想出了這個:

function compile(fmt) { 
    fmt = fmt.replace(/"/g, '\\"'); 
    var js = ' return "' + fmt.replace(/:([-\w]{2,})(?:\[([^\]]+)\])?/g, function(_, name, arg){ 
    return '"\n + (tokens["' + name + '"](req, res, "' + arg + '") || "-") + "'; 
    }) + '";' 
    return new Function('tokens, req, res', js); 
}; 

var formatter = compile(express.logger.default); // or another format, like '.tiny', '.dev' 

app.use(express.logger(function(tokens, req, res) { 
    if (res.statusCode === 200 || res.statusCode >= 400) // or whatever you want logged 
    return formatter(tokens, req, res); 
    return null; 
})); 

compile()connect/lib/middleware/logger.js拍攝,不幸的是它不會導出因此不能使用外部,因此我複製它。當然,您也可以直接使用它生成的功能並使用該功能,但這種方式可以輕鬆切換日誌記錄格式。

+0

哦,這很有趣,感謝 - 我給它一個去! – UpTheCreek