2016-07-24 7 views
1

Im Moment habe ich den folgenden Code:Katze zeigt, dass es nichts in log (Express Server)

var express = require('express'); 
var path = require('path'); 
var fs = require('fs'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

// Create write stream and append to file 
var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), {flags: 'a'}); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// additional logging 
app.use(logger('combined', {stream: accessLogStream})); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 

, die den Inhalt der Protokolle in eine Datei schreiben sollte, so kann ich die IP-Adressbereiche schauen und finde heraus, wer auf meine Website und von wo zugegriffen hat. Obwohl die Datei erstellt wird, wenn ich cat access.log gebe, ist der Inhalt leer, obwohl ich mich selbst getestet habe, so dass ich weiß, dass Leute darauf zugreifen. Von dem, was ich bei Google finden kann, soll ich etwas mit einem vertrauenswürdigen Proxy und req.ips machen. Ich fand dieses Stück Beispielcode:

app.set('trust proxy', function (ip) { 
    if (ip === '127.0.0.1' || ip === '123.123.123.123') return true; // trusted IPs 
    else return false; 
}); 

die ziemlich ähnlich sieht, was ich nach (ich nehme an, ich ‚123.123.123.123‘ auf meinem eigenen Server IP-Adresse ändern ...?) Aber was ich Ich möchte diese Ausgabe in der Datei access.log machen, die ich erstellt habe.

Irgendwelche Ideen?

atpB

Antwort

1

Sie haben Ihre logger()nach Ihre Routen, so dass Sie nicht den normalen Verkehr sehen, werden Sie nur Fehler protokollieren. Wenn Sie den normalen Verkehr sehen möchten, bewegen Sie diese Zeile:

app.use(logger('combined', {stream: accessLogStream})); 

vor dieser Zeile:

app.use('/', routes); 

Wenn Sie wollen auch Anfragen melden Sie sich an statischen Vermögenswerte in Ihrem public/ Verzeichnis, es dann weiter nach oben vor dieser Zeile:

app.use(express.static(path.join(__dirname, 'public')));