Node.js-将响应状态代码记录到控制台(一个la Django开发服务器)
Node.js - Logging response statusCode to console (a la Django development server)
我正在尝试构建一个Node.js服务器,该服务器具有类似于Django开发服务器的控制台日志记录。例如
[27/Jun/2011 15:26:50] "GET /?test=5 HTTP/1.1" 200 545
以下server.js(基于Node初学者教程)为我提供了时间和请求信息:
var http = require("http");
var url = require ("url");
var port = 1234;
function start(route, handle) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
var query = url.parse(request.url).query;
route(handle, pathname, query, response);
logRequest(request);
}
http.createServer(onRequest).listen(port);
console.log("'nServer running at http://192.168.1.5:" + port + "/");
console.log("Press CONTROL-C to quit.'n");
}
function logRequest(request) {
var pathname = url.parse(request.url).pathname;
var query = url.parse(request.url).query;
if (query == undefined) {
query = "";
}
var currentDate = new Date();
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
var hours = currentDate.getHours();
var minutes = currentDate.getMinutes();
var seconds = currentDate.getSeconds();
if (minutes < 10) {
minutes = "0" + minutes;
}
if (seconds < 10) {
seconds = "0" + seconds;
}
console.log("[" + year + "/" + month + "/" + day +
" " + hours + ":" + minutes + ":" + seconds + '] "' +
request.method + " " + pathname + query +
" HTTP/" + request.httpVersion + '"');
}
exports.start = start;
问题:我该如何更新此代码以获得response.statusCode以及日志输出中的"545"数字?
当我尝试将响应对象添加到logRequest函数时,响应状态代码总是"200",即使我知道(通过调试日志)我的router.js正在生成404个错误。
如果您使用的是链接教程中的路由方法,那么使用response.statusCode不起作用的原因是因为他们使用此行设置了404状态代码
response.writeHead(404, {"Content-Type": "text/html"});
如果你看一下Node.JS Docs-writeHead的文档,它指出.writeHead不会设置.statusCode值。如果您想使用.statusCode值,您应该将route
方法中的行更改为如下所示:
response.statusCode = 404;
response.setHeader("Content-Type", "text/html");
直接为statusCode赋值并使用"隐式"标头声明(setHeader而不是writeHead)将为用户产生相同的结果,但在您这边,稍后您可以在日志方法中访问statusCode。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Meteor后端管理界面:有没有任何软件包可以让这一切变得简单,一个la Django
- 我如何突出文本-严格定时-一个la卡拉ok没有Flash在网页上.什么技术选择
- Node.js-将响应状态代码记录到控制台(一个la Django开发服务器)
- jquery循环幻灯片-添加幻灯片前/下一个进度(一个la scrollHorz)以及自定义动画