Skip to content

Commit

Permalink
Added fluent logger sample.
Browse files Browse the repository at this point in the history
  • Loading branch information
jmdobry committed Apr 20, 2016
1 parent f5b4aa9 commit a934ad3
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 0 deletions.
57 changes: 57 additions & 0 deletions logging/fluent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// Copyright 2016, Google, Inc.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

var express = require('express');
var app = express();

app.get('*', function (req, res, next) {
return next('oops');
});

// [START fluent]
var structuredLogger = require('fluent-logger').createFluentSender('myapp', {
host: 'localhost',
port: 24224,
timeout: 3.0
});

var report = function (err, req) {
var payload = {
serviceContext: {
service: 'myapp',
},
message: err.stack,
context: {
httpRequest: {
url: req.originalUrl,
method: req.method,
referrer: req.header('Referer'),
userAgent: req.header('User-Agent'),
remoteIp: req.ip,
responseStatusCode: 500,
}
}
};
structuredLogger.emit('errors', payload);
};

// Handle errors (the following uses the Express framework)
app.use(function (err, req, res) {
report(err, req);
res.status(500).send(err.response || 'Something broke!');
});
// [END fluent]

module.exports = app;
2 changes: 2 additions & 0 deletions logging/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
"export": "node export.js"
},
"dependencies": {
"express": "^4.13.4",
"fluent-logger": "^1.1.0",
"gcloud": "^0.30.3"
}
}
51 changes: 51 additions & 0 deletions test/logging/fluent.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Copyright 2015-2016, Google, Inc.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

var test = require('ava');
var proxyquire = require('proxyquire').noPreserveCache();
var request = require('supertest');

test.cb('should log error', function (t) {
var loggerCalled = false;

var structuredLogger = {
emit: function (name) {
t.is(name, 'errors');
loggerCalled = true;
}
};

var app = proxyquire('../../logging/fluent.js', {
'fluent-logger': {
createFluentSender: function (name, options) {
t.is(name, 'myapp');
t.same(options, {
host: 'localhost',
port: 24224,
timeout: 3.0
});
return structuredLogger;
}
}
});

request(app)
.get('/')
.expect(500)
.expect(function () {
t.is(loggerCalled, true, 'structuredLogger.emit should have been called');
})
.end(t.end);
});

0 comments on commit a934ad3

Please sign in to comment.