Express连接记录器缺少一些令牌

时间:2014-02-27 03:02:12

标签: node.js logging express token connect

我正在使用Node Express并使用Connect Logger进行日志记录。我想看到的大多数令牌,正确记录一个值,但其中一些是连字符。例如,默认日志格式定义为:

default ':remote-addr - - [:date] ":method :url HTTP/:http-version" 
:status :res[content-length] ":referrer" ":user-agent"'

但以下两个标记仅显示连字符(而不是实际值):

:res[content-length]
:referrer

我还尝试按照Connect的内容类型示例定义新标记:

express.logger.token('type', function(req, res){ 
return req.headers['content-type']; })

但又没有运气。我的最终目标是显示用户名发出请求,但我甚至无法获得开箱即用的体验,所以我想知道我是否正确设置了这个。

这是我的基本代码设置:

var express = require('express')
, http = require('http')
, path = require('path')
, request = require('request')
, util = require('util')            
, parseString = require('xml2js').parseString
, htmlDec = require('htmldec')  
, users = require('./users')        
, companies = require('./companies')    
, app = module.exports = express()
, flash = require('connect-flash')
, passport = require('passport')
, LocalStrategy = require('passport-local').Strategy
, ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn
, async = require('async')
, nodemailer = require("nodemailer")
, fs = require('fs')
, sanitizeHtml = require('sanitize-html')
, memwatch = require('memwatch');

app.server = require('http').createServer(app);

app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'html'); 
app.use(express.logger());
app.use(express.compress());  
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.session({/* are here in source */}));       
app.engine('.html', require('ejs').__express);
app.use(flash());
app.use(passport.initialize());  
app.use(passport.session());    
app.use(app.router);  
app.use('/styles', express.static(__dirname + '/styles'));
app.use(express.static(__dirname + '/../../public'));
});

npm ls

├── async@0.2.9
├── connect-ensure-login@0.1.1
├── connect-flash@0.1.1
├── ejs@0.8.4
├── escape-html@1.0.1 extraneous
├─┬ express@3.4.8
│ ├── buffer-crc32@0.2.1
│ ├─┬ commander@1.3.2
│ │ └── keypress@0.1.0
│ ├─┬ connect@2.12.0
│ │ ├── batch@0.5.0
│ │ ├── bytes@0.2.1
│ │ ├─┬ multiparty@2.2.0
│ │ │ ├─┬ readable-stream@1.1.11
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── debuglog@0.0.2
│ │ │ │ └── string_decoder@0.10.25-1
│ │ │ └── stream-counter@0.2.0
│ │ ├── negotiator@0.3.0
│ │ ├── pause@0.0.1
│ │ ├── qs@0.6.6
│ │ ├── raw-body@1.1.2
│ │ └── uid2@0.0.3
│ ├── cookie@0.1.0
│ ├── cookie-signature@1.0.1
│ ├── debug@0.7.4
│ ├── fresh@0.2.0
│ ├── merge-descriptors@0.0.1
│ ├── methods@0.1.0
│ ├── mkdirp@0.3.5
│ ├── range-parser@0.0.4
│ └─┬ send@0.1.4
│   └── mime@1.2.11
├── htmldec@0.0.1
├── memwatch@0.2.2
├─┬ morgan@1.0.0 
│ └── bytes@0.2.1
├─┬ nodemailer@0.5.5
│ ├─┬ mailcomposer@0.2.6
│ │ ├── dkim-signer@0.1.0
│ │ ├── he@0.3.6
│ │ ├── mime@1.2.9
│ │ ├─┬ mimelib@0.2.14
│ │ │ ├── addressparser@0.2.0
│ │ │ └─┬ encoding@0.1.7
│ │ │   └── iconv-lite@0.2.11
│ │ └── punycode@1.2.3
│ └─┬ simplesmtp@0.3.16
│   ├── rai@0.1.8
│   └── xoauth2@0.1.8
├─┬ nodetime@0.8.14
│ └─┬ nodetime-native@0.1.0
│   └── bindings@1.1.1
├─┬ passport@0.1.17
│ ├── pause@0.0.1
│ └── pkginfo@0.2.3
├─┬ passport-local@0.1.6
│ └── pkginfo@0.2.3
├─┬ request@2.27.0
│ ├── aws-sign@0.3.0
│ ├── cookie-jar@0.3.0
│ ├── forever-agent@0.5.0
│ ├─┬ form-data@0.1.2
│ │ └─┬ combined-stream@0.0.4
│ │   └── delayed-stream@0.0.5
│ ├─┬ hawk@1.0.0
│ │ ├── boom@0.4.2
│ │ ├── cryptiles@0.2.2
│ │ ├── hoek@0.9.1
│ │ └── sntp@0.2.4
│ ├─┬ http-signature@0.10.0
│ │ ├── asn1@0.1.11
│ │ ├── assert-plus@0.1.2
│ │ └── ctype@0.5.2
│ ├── json-stringify-safe@5.0.0
│ ├── mime@1.2.11
│ ├── node-uuid@1.4.1
│ ├── oauth-sign@0.3.0
│ ├── qs@0.6.6
│ └── tunnel-agent@0.3.0
├─┬ sanitize-html@0.1.4
│ ├─┬ htmlparser2@3.3.0
│ │ ├── domelementtype@1.1.1
│ │ ├── domhandler@2.1.0
│ │ ├── domutils@1.1.6
│ │ └── readable-stream@1.0.17
│ └── lodash@1.3.1
└─┬ xml2js@0.2.8
  └── sax@0.5.7

1 个答案:

答案 0 :(得分:0)

这可能是一个案例问题。 Javascript属性名称区分大小写。

我认为content-length应为Content-Length

referer拼写错误。因此,您可以尝试Refererreferer