Kaynağa Gözat

log errors only once, fixes #140

also made sure some (network) errors have level 'WARN'
these are printed without stacktrace
jomo 9 yıl önce
ebeveyn
işleme
26f6b089ef

+ 1 - 7
lib/helpers.js

@@ -44,12 +44,10 @@ function store_skin(rid, userId, profile, cache_details, callback) {
               } else {
                 skins.save_image(img, skinpath, function(skin_err) {
                   if (skin_err) {
-                    logging.error(rid, skin_err);
                     callback(skin_err, null);
                   } else {
                     skins.extract_face(img, facepath, function(err2) {
                       if (err2) {
-                        logging.error(rid, err2.stack);
                         callback(err2, null);
                       } else {
                         logging.debug(rid, "face extracted");
@@ -95,7 +93,6 @@ function store_cape(rid, userId, profile, cache_details, callback) {
           } else {
             networking.get_from(rid, url, function(img, response, net_err) {
               if (net_err || !img) {
-                logging.error(rid, net_err.stack);
                 callback(net_err, null);
               } else {
                 skins.save_image(img, capepath, function(skin_err) {
@@ -342,10 +339,7 @@ exp.get_render = function(rid, userId, scale, helm, body, callback) {
             callback(null, 0, skin_hash, null);
           } else {
             fs.writeFile(renderpath, drawn_img, "binary", function(fs_err) {
-              if (fs_err) {
-                logging.error(rid, fs_err.stack);
-              }
-              callback(null, 2, skin_hash, drawn_img);
+              callback(fs_err, 2, skin_hash, drawn_img);
             });
           }
         });

+ 3 - 7
lib/networking.js

@@ -73,12 +73,9 @@ exp.get_from_options = function(rid, url, options, callback) {
   }, function(error, response, body) {
     // log url + code + description
     var code = response && response.statusCode;
-    if (error) {
-      logging.error(rid, url, error);
-    } else {
-      var logfunc = code && code < 405 ? logging.debug : logging.warn;
-      logfunc(rid, url, code, http_code[code]);
-    }
+
+    var logfunc = code && code < 405 ? logging.debug : logging.warn;
+    logfunc(rid, url, code, http_code[code]);
 
 
     switch (code) {
@@ -201,7 +198,6 @@ exp.save_texture = function(rid, tex_hash, outpath, callback) {
     var textureurl = textures_url + tex_hash;
     exp.get_from(rid, textureurl, function(img, response, err) {
       if (err) {
-        logging.error(rid, "error while downloading texture");
         callback(err, response, null);
       } else {
         skins.save_image(img, outpath, function(img_err) {

+ 0 - 7
lib/renders.js

@@ -161,7 +161,6 @@ exp.draw_model = function(rid, img, scale, helm, body, callback) {
   var image = new Image();
 
   image.onerror = function(err) {
-    logging.error(rid, "render error:", err.stack);
     callback(err, null);
   };
 
@@ -189,9 +188,6 @@ exp.draw_model = function(rid, img, scale, helm, body, callback) {
     enhance(model_ctx);
 
     model_canvas.toBuffer(function(err, buf) {
-      if (err) {
-        logging.error(rid, "error creating buffer:", err);
-      }
       callback(err, buf);
     });
   };
@@ -203,9 +199,6 @@ exp.draw_model = function(rid, img, scale, helm, body, callback) {
 // callback: error, image buffer
 exp.open_render = function(rid, renderpath, callback) {
   fs.readFile(renderpath, function(err, buf) {
-    if (err) {
-      logging.error(rid, "error while opening skin file:", err);
-    }
     callback(err, buf);
   });
 };

+ 12 - 4
lib/response.js

@@ -12,6 +12,9 @@ var human_status = {
 };
 
 
+// print these, but without stacktrace
+var silent_errors = ["ETIMEDOUT", "ESOCKETTIMEDOUT", "ECONNRESET", "EHOSTUNREACH", "ECONNREFUSED"];
+
 // handles HTTP responses
 // +request+ a http.IncomingMessage
 // +response+ a http.ServerResponse
@@ -23,7 +26,6 @@ var human_status = {
 //  * hash:     image hash, required when body is an image
 //  * err:      a possible Error
 module.exports = function(request, response, result) {
-
   response.on("close", function() {
     logging.warn(request.id, "Connection closed");
   });
@@ -38,7 +40,7 @@ module.exports = function(request, response, result) {
 
   // These headers are the same for every response
   var headers = {
-    "Content-Type": (result.body && result.type) || "text/plain",
+    "Content-Type": result.body && result.type || "text/plain",
     "Cache-Control": "max-age=" + config.caching.browser + ", public",
     "Response-Time": Date.now() - request.start,
     "X-Request-ID": request.id,
@@ -46,8 +48,14 @@ module.exports = function(request, response, result) {
   };
 
   if (result.err) {
-    logging.error(request.id, result.err);
-    logging.error(request.id, result.err.stack);
+    var silent = silent_errors.indexOf(result.err.code) !== -1;
+    if (result.err.stack && !silent) {
+      logging.error(request.id, result.err.stack);
+    } else if (silent) {
+      logging.warn(request.id, result.err);
+    } else {
+      logging.error(request.id, result.err);
+    }
     result.status = -1;
   }
 

+ 0 - 3
lib/routes/avatars.js

@@ -1,4 +1,3 @@
-var logging = require("../logging");
 var helpers = require("../helpers");
 var config = require("../../config");
 var skins = require("../skins");
@@ -82,7 +81,6 @@ module.exports = function(req, callback) {
   try {
     helpers.get_avatar(req.id, userId, helm, size, function(err, status, image, hash) {
       if (err) {
-        logging.error(req.id, err);
         if (err.code === "ENOENT") {
           // no such file
           cache.remove_hash(req.id, userId);
@@ -101,7 +99,6 @@ module.exports = function(req, callback) {
       }
     });
   } catch (e) {
-    logging.error(req.id, "error:", e.stack);
     handle_default(-1, userId, size, def, req, e, callback);
   }
 };

+ 0 - 1
lib/routes/capes.js

@@ -32,7 +32,6 @@ module.exports = function(req, callback) {
   try {
     helpers.get_cape(rid, userId, function(err, hash, status, image) {
       if (err) {
-        logging.error(rid, err);
         if (err.code === "ENOENT") {
           // no such file
           cache.remove_hash(rid, userId);

+ 0 - 2
lib/routes/renders.js

@@ -98,7 +98,6 @@ module.exports = function(req, callback) {
   try {
     helpers.get_render(rid, userId, scale, helm, body, function(err, status, hash, image) {
       if (err) {
-        logging.error(rid, err);
         if (err.code === "ENOENT") {
           // no such file
           cache.remove_hash(rid, userId);
@@ -118,7 +117,6 @@ module.exports = function(req, callback) {
       }
     });
   } catch(e) {
-    logging.error(rid, "error:", e.stack);
     handle_default(rid, scale, helm, body, -1, userId, scale, def, req, e, callback);
   }
 };

+ 0 - 2
lib/routes/skins.js

@@ -81,7 +81,6 @@ module.exports = function(req, callback) {
   try {
     helpers.get_skin(rid, userId, function(err, hash, status, image) {
       if (err) {
-        logging.error(req.id, err);
         if (err.code === "ENOENT") {
           // no such file
           cache.remove_hash(req.id, userId);
@@ -100,7 +99,6 @@ module.exports = function(req, callback) {
       }
     });
   } catch(e) {
-    logging.error(rid, "error:", e.stack);
     handle_default(-1, userId, def, req, e, callback);
   }
 };

+ 0 - 1
lib/skins.js

@@ -126,7 +126,6 @@ exp.default_skin = function(uuid) {
 exp.open_skin = function(rid, skinpath, callback) {
   fs.readFile(skinpath, function(err, buf) {
     if (err) {
-      logging.error(rid, "error while opening skin file:", err);
       callback(err, null);
     } else {
       callback(null, buf);