diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-04-20 12:08:30 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-04-20 12:08:30 +0200 |
| commit | 48228037d8ff78b135e1d299910cb649178ec118 (patch) | |
| tree | a9b0816751ddcce8e56f053dd4689400e6f5dda5 | |
| parent | 4fb48f248de4bc54ed76c50af8b80c528c04e027 (diff) | |
| download | cruncher-release/2.0.0.tar.gz cruncher-release/2.0.0.zip | |
integrate logglyrelease/2.0.0
| -rw-r--r-- | package.json | 3 | ||||
| -rw-r--r-- | worker.js | 27 |
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": { @@ -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], |
