Skip to content

Commit

Permalink
added better logging and fixed 404 error
Browse files Browse the repository at this point in the history
  • Loading branch information
kennethgoodman committed May 16, 2016
1 parent 49abca8 commit 0f05e0f
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 97 deletions.
4 changes: 2 additions & 2 deletions cronJobs.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ var job1 = new CronJob('00 30 02 * * *', function() {
client.connect();
var query = client.query(q);
query.on('row', function(row){
console.log(row)
logger.log(row)
})
query.on('end', function(){
client.end();
})
}
deleteTexted();
}, function(){
console.log("deleted users")
logger.log("deleted users")
},
false, 'America/New_York');
job1.start();
Expand Down
18 changes: 5 additions & 13 deletions database.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ queryDatabasePerRow = function(query,callback){
return;
}
pg.connect(process.env.DATABASE_URL, function(err, client) {
if (err) console.log(err);
if (err) logger.error(err);

client
.query(query) //'SELECT * FROM clients_and_their_info')
Expand All @@ -26,15 +26,13 @@ queryDatabasePerRow = function(query,callback){
sendQuery = function(query, params, callback){
if(query == undefined || query == null){
callback({error:"bad query"})
console.log("bad query\n" + query)
console.log("params: " + params)
logger.error("bad query\nquery: %s\n params:%s", query, params)
return;
}
//console.log(query)
pg.connect(process.env.DATABASE_URL, function(err, client) {
if (err) {
console.log("bad query" + query)
console.log(err);
logger.error("Error while connecting\n%j", err);
pg.end();
return;
}
Expand All @@ -43,10 +41,8 @@ sendQuery = function(query, params, callback){
.query(query, params, function(err, result) {
if(err) {
err["Error"] = true;
console.error('error running query', err);
logger.error('Error running query\nquery: %s\n params: %s\nerror: %j', query, params, err);
callback(err)
console.log("bad query\n" + query)
console.log("\nparams: \t" + params)
client.end();
}
else{
Expand All @@ -58,6 +54,7 @@ sendQuery = function(query, params, callback){
}
sendQuery2 = function(q,params, callback){
if(q == undefined || q == null){
logger.error("bad query\nquery: %s\n params:%s", query, params)
callback({error:"bad query"})
return;
}
Expand All @@ -80,11 +77,8 @@ viewTable = function(callback){
, [], callback)
}
testAddDataToTable = function(callback){
console.log("here")
count = 0
var interval = setInterval( function(){

console.log("in setInterval")
sendQuery('Insert into testTable (data) values (\'' + count + '\')',[], callback);
count += 1
if(count > 50)
Expand Down Expand Up @@ -135,7 +129,6 @@ getTeacherInfo = function(params,callback){
var tries = 0
sql = "select distinct schools.name as schoolName from schools, session where schools.id = session.school and schools.id = $1"
sendQuery2(sql, [params[0]], function(data){
console.log(data)
temp = function(){
sendQuery( "select distinct * from ratemyprofessor where inst like \'%"+ data["schoolname"] +"%\' and name = $1" ,[params[1]],function(result){
try{
Expand All @@ -157,6 +150,5 @@ getTeacherInfo = function(params,callback){
}
temp()
})

}
//testAddDataToTable(function(result){console.log(result)})
34 changes: 21 additions & 13 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,7 @@ try{
}catch(err){
//do nothing if this fails, we are in dev
}
/*********************** other js files in this directory ******************************/
require('./database');
require('./mainLoop');
require('./carrier');
require('./serverSideVariables')
require('./worker');
require('./cronJobs');
var websocket = require('./websocket');
/***************************************************************************************/

/*********************** npm modules in use ********************************************/

var pg = require('pg'); // for postgres access
var assert = require('assert');
var WebSocketServer = require('ws').Server; // to send messeges easily between client and server
Expand All @@ -27,9 +16,27 @@ var session = require('express-session');
var app = express();
var raygun = require('raygun'); //for error handling
var pgSession = require('connect-pg-simple')(session);
var logger = require('tracer').console({
format : [ "<{{title}}> {{file}}:{{line}}: {{message}}", {error: "<{{title}}> {{file}}:{{line}}: {{message}} \nCall Stack: {{stack}}"}],
preprocess: function(data){ data.title = data.title.toUpperCase()}
})
//global.logger = logger
/***************************************************************************************/



/*********************** other js files in this directory ******************************/
require('./database');
require('./mainLoop');
require('./carrier');
require('./serverSideVariables')
require('./worker');
require('./cronJobs');
var websocket = require('./websocket');
/***************************************************************************************/



/*********************** set up server ********************************************/
var port = process.env.PORT || 5000;
app.set('views',__dirname + '/views'); // basically for the views folder
Expand Down Expand Up @@ -100,16 +107,17 @@ app.get('/db', function(request, response) { //NEED TO PROTECT THIS
});

app.get('*', function(req,res,next){ //for all other attempts
logger.log(req)
var err = new Error();
err.status = 404;
next(err)
})
app.use(function(err, req, res, next){
if(err.status !== 404){
console.log(err);
logger.error(err);
//return next();
}
console.log(err)
logger.error(err)
res.send(err.message || 'There is no page at this link') //error is 404, Maybe create a 404 ejs page
})
/**********************************************************************************/
Expand Down
22 changes: 10 additions & 12 deletions mainLoop.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ var counter = 0; //count how many threads in the function, only want one at the
global.CUNYFIRST_DOWN = false
queueRead2 = function lambda(){
var item = queue.shift();
//console.log(item)
if(item != undefined){
try{
getSections(item.inst, item.session, item.dept, function(struct){
Expand All @@ -26,23 +25,22 @@ queueRead2 = function lambda(){
var params = [item.inst,item.session,item.dept]
sendQuery2(q, params, function(row){
if(row == undefined || row == null) {
console.log("returning")
logger.warn("row was null or undefined")
return;
}
if(row.error){
if(Math.random() > .95) //cuny first may be down, so lets do this infrequently
console.log(row.error)
logger.error(row.error)
return
}
try{
var text = item.dept + ": "+ row["classnbr"] +', ' + row["section"] + ' is ' + struct[row["classnbr"]][row["section"]]["Status"] + ". Teacher: " + struct[row["classnbr"]][row["section"]]['Instructor'];
//console.log(new Date() + ": " + text)
} catch(err){
console.log("Error when trying to create text")
console.log("row[\"classnbr\"] = " + row["classnbr"])
console.log("row[\"section\"] = " + row["section"])
console.log("struct[row[\"classnbr\"]] = " + struct[row["classnbr"]])
console.log(err)
logger.log("Error when trying to create text")
logger.log("row[\"classnbr\"] = " + row["classnbr"])
logger.log("row[\"section\"] = " + row["section"])
logger.log("struct[row[\"classnbr\"]] = " + struct[row["classnbr"]])
logger.error(err)
}
if(struct.hasOwnProperty(row["classnbr"]) && struct[row["classnbr"]].hasOwnProperty(row["section"]) && struct[row["classnbr"]][row["section"]]["Status"] == "Open"){
var q = 'select phone_number, provider, email, sendwith, alerted from customer_info where inst=$1 and session=$2 and dept=$3 and classnbr=$4 and section=$5 and alerted=false';
Expand All @@ -55,9 +53,9 @@ queueRead2 = function lambda(){

sendQuery(query, params, function(result){ //change alerted to TRUE in DB
try{
console.log(result.command + + " " + item.dept + " " + row["classnbr"] + " " +row["section"]);
logger.log(result.command + + " " + item.dept + " " + row["classnbr"] + " " +row["section"]);
} catch(err){
console.log(result);
logger.warn("Error was thrown: \nresult: %s\nerror: %j", result, err);
}
})
}
Expand All @@ -66,7 +64,7 @@ queueRead2 = function lambda(){
})
})
} catch(err){
console.log(err)
logger.warn("Error was thrown:\nerror: %j", err);
}
}
counter--;
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
"sql-injection": "0.0.5",
"textbelt": "0.0.3",
"textmagic-rest-client": "0.0.5",
"tracer": "^0.8.3",
"twilio": "^2.5.2",
"websocket.io": "^0.2.1",
"ws": "0.4.x",
Expand Down
15 changes: 7 additions & 8 deletions texting.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@ send_email = function(recepient, provider, body){
}
sendgrid.send(payload, function(err, json) {
if (err) { console.error(err); }
console.log(JSON.stringify(json) + " : " + to + ": " + body);
logger.info(JSON.stringify(json) + " : " + to + ": " + body);
});
}
else{
var c = new TMClient('yigalsaperstein', 'vL88ayn2N3OdRGWYy3yytqrrn0Znh9');
c.Messages.send({text: body, phones:"+1"+recepient}, function(err, res){
console.log('Messages.send()', err, res);
logger.info('Messages.send()', err, res);
});
}
}
Expand Down Expand Up @@ -96,8 +96,7 @@ send_confirmation = function(recepient, provider, body){
}
var send_text= function(number, s, body){
text.send(number, body, 'us', function(err){
console.log('error in texting')
console.log(err)
logger.error('error in texting\nerror: %j', err)
})
}
//send_email('5164046348','Verizon', 'Test');
Expand All @@ -107,16 +106,16 @@ send_alert = function(user_id,body){
var sendwith = row.sendwith
if(sendwith == 'text'){
send_email(row.phone_number, row.provider, body)
console.log("SENT: " + row.user_id +": " + row.phone_number + " "+ body + " " + sendwith)
logger.info("SENT: " + row.user_id +": " + row.phone_number + " "+ body + " " + sendwith)
} else if(sendwith == 'email'){
send_email(row.email, '@', body)
console.log("SENT: " + row.user_id +": " + row.email + " " + body + " " + sendwith)
logger.info("SENT: " + row.user_id +": " + row.email + " " + body + " " + sendwith)
} else if(sendwith == 'both'){
send_email(row.phone_number, row.provider, body)
send_email(row.email, '@', body)
console.log("SENT: " + row.user_id +": " + row.phone_number + " "+ row.email + " "+body + " " + sendwith)
logger.info("SENT: " + row.user_id +": " + row.phone_number + " "+ row.email + " "+body + " " + sendwith)
} else{
console.log("Error: sendwith was not a correct value -" + sendwith + "- " + row.user_id)
logger.error("Error: sendwith was not a correct value -" + sendwith + "- " + row.user_id)
}
})
}
Expand Down
2 changes: 1 addition & 1 deletion views/partials/header.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

<!-- Jquery Confirm -->
<script type="text/javascript" src="/javascript/jquery-confirm/jquery-confirm.min.js"></script>
<link rel="stylesheet" type="text/css" href="/stylesheets/jquery-confirm.min">
<link rel="stylesheet" type="text/css" href="/stylesheets/jquery-confirm.min.css">
<!-- Jquery Confirm -->

<!--link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.css"-->
Expand Down
26 changes: 15 additions & 11 deletions websocket.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
var logger = require('tracer').console({
format : [ "<{{title}}> {{file}}:{{line}}: {{message}}", {error: "<{{title}}> {{file}}:{{line}}: {{message}} \nCall Stack: {{stack}}"}],
preprocess: function(data){ data.title = data.title.toUpperCase()}
})
module.exports = function(wss){
wss.on("connection", function(ws){
var id = setInterval(function(){
ws.send(JSON.stringify(["keep open", new Date()]),function(){})
},2500) // constantly ping the client side every 2.5 seconds, is this bad?
console.log("websocket connection open")
logger.info("websocket connection open")
ws.on("close", function(){
console.log("websocket connection closing")
logger.info("websocket connection closing")
})
ws.on('message', function(data){
console.log("message received : " + data)
logger.log("message received : " + data)
data = JSON.parse(data)
commandRecieved = data[0];
switch(commandRecieved){
Expand Down Expand Up @@ -73,8 +77,8 @@ module.exports = function(wss){
break
case "removeUserClass":
var query = "REMOVE FROM customer_info WHERE inst = $1 AND session = $2 AND dept = $3 and classnbr = $4 AND section = $5";
console.log(query)
console.log(data.slice(2, data.length - 1))
logger.log(query)
logger.log(data.slice(2, data.length - 1))
//sendQuery(query, data.slice(1, data.length - 1))
break
case "get_class":
Expand Down Expand Up @@ -164,7 +168,7 @@ module.exports = function(wss){
sendData(ws,b)
}
catch(err){
console.log(err)
logger.error("Error was thrown\nerror: %j" ,err)
}
})
break
Expand Down Expand Up @@ -222,18 +226,18 @@ module.exports = function(wss){
params.push(data[data.length-1]); //sendWith
}

console.log("inserting into table");
logger.log("inserting into table");
sendQuery(query, params, function(result){
if(result.hasOwnProperty("Error")){
//TODO: test to find all possible errors
if(result.code == '23505'){
sendData(ws, ["err", "You\'ve signed up for one of these classes already, if this is a mistake, please contact support"])
console.log("PK problem error on query");
logger.warn("PK problem error on query");
return;
}
else{
sendData(ws, ["err","An error occured, please contact support"])
console.log("Unknown error on query");
logger.error("Unknown error on query");
return;
}
}
Expand Down Expand Up @@ -303,14 +307,14 @@ module.exports = function(wss){
for(var d in data){
if(data[d] === ""){
sendData(socket,["err", "One of your fields is empty, if this is a mistake, please contact support."])
console.log("Error: empty field");
logger.warn("Error: empty field");
return false;
}
try{
for(var e in data[d]){
if(data[d][e] === ""){
sendData(socket, ["err", "One of your fields is empty, if this is a mistake, please contact support"])
console.log("Error: empty field");
logger.warn("Error: empty field");
return false;
}
}
Expand Down
Loading

0 comments on commit 0f05e0f

Please sign in to comment.