summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-04-20 12:08:30 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2017-04-20 12:08:30 +0200
commit48228037d8ff78b135e1d299910cb649178ec118 (patch)
treea9b0816751ddcce8e56f053dd4689400e6f5dda5
parent4fb48f248de4bc54ed76c50af8b80c528c04e027 (diff)
downloadcruncher-release/2.0.0.tar.gz
cruncher-release/2.0.0.zip
integrate logglyrelease/2.0.0
-rw-r--r--package.json3
-rw-r--r--worker.js27
2 files changed, 20 insertions, 10 deletions
diff --git a/package.json b/package.json
index a3980f0..545fcfc 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,8 @@
"object-hash": "^1.1.7",
"sequelize": "^3.30.4",
"sleep-promise": "^2.0.0",
- "winston": "^2.3.1"
+ "winston": "^2.3.1",
+ "winston-loggly-bulk": "^1.4.2"
},
"devDependencies": {},
"scripts": {
diff --git a/worker.js b/worker.js
index 65d5d45..8991f92 100644
--- a/worker.js
+++ b/worker.js
@@ -5,12 +5,14 @@
const amqp = require("amqplib"),
Promise = require("bluebird"),
winston = require("winston"),
+ loggly = require("winston-loggly-bulk"),
Seq = require("sequelize"),
sleep = require("sleep-promise"),
hash = require("object-hash");
const RABBITMQ_URI = process.env.RABBITMQ_URI,
DATABASE_URI = process.env.DATABASE_URI,
+ LOGGLY_TOKEN = process.env.LOGGLY_TOKEN,
// number of inserts in one statement
CHUNKSIZE = parseInt(process.env.CHUNKSIZE) || 100,
CRUNCHERS = process.env.CRUNCHERS || 4; // how many players to crunch concurrently
@@ -18,13 +20,21 @@ const RABBITMQ_URI = process.env.RABBITMQ_URI,
const logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
- timestamp: () => Date.now(),
- formatter: (options) => winston.config.colorize(options.level,
-`${new Date(options.timestamp()).toISOString()} ${options.level.toUpperCase()} ${(options.message? options.message:"")} ${(options.meta && Object.keys(options.meta).length? JSON.stringify(options.meta):"")}`)
+ timestamp: true,
+ colorize: true
})
]
});
+// loggly integration
+if (LOGGLY_TOKEN)
+ logger.add(winston.transports.Loggly, {
+ inputToken: LOGGLY_TOKEN,
+ subdomain: "kvahuja",
+ tags: ["backend", "cruncher"],
+ json: true
+ });
+
// helpers
// split an array into arrays of max chunksize
function* chunks(arr) {
@@ -142,8 +152,8 @@ function* chunks(arr) {
global_records = [],
player_id = msg.content.toString();
- logger.info("working for %s on %s",
- msg.properties.type, player_id);
+ logger.info("working",
+ { type: msg.properties.type, id: player_id });
let calculation_profiler = logger.startTimer();
if (msg.properties.type == "global") {
@@ -182,8 +192,7 @@ function* chunks(arr) {
await ch.ack(msg);
} catch (err) {
// TODO
- logger.error("SQL error: %s, %j, %s",
- err.name, err.errors, err.parent);
+ logger.error("SQL error", err);
await ch.nack(msg, false, true); // requeue
}
transaction_profiler.done("database transaction");
@@ -194,7 +203,7 @@ function* chunks(arr) {
attributes: ["name"]
});
if (player != null) {
- logger.info("updated player '%s'", player.get("name"));
+ logger.info("updated player", { name: player.get("name") });
await ch.publish("amq.topic", "player." + player.get("name"),
new Buffer("points_update"));
}
@@ -224,7 +233,7 @@ function* chunks(arr) {
async function calculate_player_point(player_api_id) {
let point_records = [];
- logger.info("crunching player %s", player_api_id);
+ logger.info("crunching player", { id: player_api_id });
await Promise.all(player_points.map(async (tuple) => {
const where_aggr = tuple[0],