Fix error logging
authorChocobozzz <florian.bigard@gmail.com>
Fri, 7 Jul 2017 16:26:12 +0000 (18:26 +0200)
committerChocobozzz <florian.bigard@gmail.com>
Fri, 7 Jul 2017 16:26:12 +0000 (18:26 +0200)
21 files changed:
server/controllers/api/pods.ts
server/controllers/api/remote/videos.ts
server/controllers/api/users.ts
server/controllers/api/videos/abuse.ts
server/controllers/api/videos/blacklist.ts
server/controllers/api/videos/index.ts
server/controllers/api/videos/rate.ts
server/helpers/database-utils.ts
server/helpers/peertube-crypto.ts
server/lib/friends.ts
server/lib/jobs/handlers/video-transcoder.ts
server/lib/jobs/job-scheduler.ts
server/lib/request/abstract-request-scheduler.ts
server/lib/request/request-scheduler.ts
server/middlewares/oauth.ts
server/middlewares/validators/pods.ts
server/middlewares/validators/users.ts
server/middlewares/validators/videos.ts
server/models/oauth/oauth-token.ts
server/models/pod/pod.ts
server/models/video/video.ts

index 0f85ab51d9c7235e9acb45ee45a450dd3bf63bd0..55a7df6610da09bd9f632b82f8967d1c6896ac90 100644 (file)
@@ -81,7 +81,7 @@ function makeFriendsController (req: express.Request, res: express.Response, nex
 
   makeFriends(hosts)
     .then(() => logger.info('Made friends!'))
-    .catch(err => logger.error('Could not make friends.', { error: err }))
+    .catch(err => logger.error('Could not make friends.', err))
 
   // Don't wait the process that could be long
   res.type('json').status(204).end()
index eb033637e14a1c40dbc108a764554cd8a5504ec2..fac85c3a852a645f9ea2e166c3ba12ef876e0ff7 100644 (file)
@@ -76,7 +76,7 @@ function remoteVideos (req: express.Request, res: express.Response, next: expres
 
     return fun.call(this, data, fromPod)
   })
-  .catch(err => logger.error('Error managing remote videos.', { error: err }))
+  .catch(err => logger.error('Error managing remote videos.', err))
 
   // Don't block the other pod
   return res.type('json').status(204).end()
@@ -91,7 +91,7 @@ function remoteVideosQadu (req: express.Request, res: express.Response, next: ex
 
     return quickAndDirtyUpdateVideoRetryWrapper(videoData, fromPod)
   })
-  .catch(err => logger.error('Error managing remote videos.', { error: err }))
+  .catch(err => logger.error('Error managing remote videos.', err))
 
   return res.type('json').status(204).end()
 }
@@ -105,7 +105,7 @@ function remoteVideosEvents (req: express.Request, res: express.Response, next:
 
     return processVideosEventsRetryWrapper(eventData, fromPod)
   })
-  .catch(err => logger.error('Error managing remote videos.', { error: err }))
+  .catch(err => logger.error('Error managing remote videos.', err))
 
   return res.type('json').status(204).end()
 }
@@ -167,7 +167,7 @@ function processVideosEvents (eventData: any, fromPod: PodInstance) {
   })
   .then(() => logger.info('Remote video event processed for video %s.', eventData.remoteId))
   .catch(err => {
-    logger.debug('Cannot process a video event.', { error: err })
+    logger.debug('Cannot process a video event.', err)
     throw err
   })
 }
@@ -207,7 +207,7 @@ function quickAndDirtyUpdateVideo (videoData: any, fromPod: PodInstance) {
       })
   })
   .then(() => logger.info('Remote video %s quick and dirty updated', videoName))
-  .catch(err => logger.debug('Cannot quick and dirty update the remote video.', { error: err }))
+  .catch(err => logger.debug('Cannot quick and dirty update the remote video.', err))
 }
 
 // Handle retries on fail
@@ -287,7 +287,7 @@ function addRemoteVideo (videoToCreateData: any, fromPod: PodInstance) {
   })
   .then(() => logger.info('Remote video %s inserted.', videoToCreateData.name))
   .catch(err => {
-    logger.debug('Cannot insert the remote video.', { error: err })
+    logger.debug('Cannot insert the remote video.', err)
     throw err
   })
 }
@@ -341,7 +341,7 @@ function updateRemoteVideo (videoAttributesToUpdate: any, fromPod: PodInstance)
   .then(() => logger.info('Remote video %s updated', videoAttributesToUpdate.name))
   .catch(err => {
     // This is just a debug because we will retry the insert
-    logger.debug('Cannot update the remote video.', { error: err })
+    logger.debug('Cannot update the remote video.', err)
     throw err
   })
 }
@@ -354,7 +354,7 @@ function removeRemoteVideo (videoToRemoveData: any, fromPod: PodInstance) {
       return video.destroy()
     })
     .catch(err => {
-      logger.debug('Could not fetch remote video.', { host: fromPod.host, remoteId: videoToRemoveData.remoteId, error: err })
+      logger.debug('Could not fetch remote video.', { host: fromPod.host, remoteId: videoToRemoveData.remoteId, error: err.stack })
     })
 }
 
@@ -372,7 +372,7 @@ function reportAbuseRemoteVideo (reportData: any, fromPod: PodInstance) {
 
       return db.VideoAbuse.create(videoAbuseData)
     })
-    .catch(err => logger.error('Cannot create remote abuse video.', { error: err }))
+    .catch(err => logger.error('Cannot create remote abuse video.', err))
 }
 
 function fetchOwnedVideo (id: string) {
@@ -383,7 +383,7 @@ function fetchOwnedVideo (id: string) {
       return video
     })
     .catch(err => {
-      logger.error('Cannot load owned video from id.', { error: err, id })
+      logger.error('Cannot load owned video from id.', { error: err.stack, id })
       throw err
     })
 }
@@ -396,7 +396,7 @@ function fetchRemoteVideo (podHost: string, remoteId: string) {
       return video
     })
     .catch(err => {
-      logger.error('Cannot load video from host and remote id.', { error: err, podHost, remoteId })
+      logger.error('Cannot load video from host and remote id.', { error: err.stack, podHost, remoteId })
       throw err
     })
 }
index 6e0bb474a4677df3a63cbcb077e5b0c1ef2376e9..845facd55847dd53fc3d99defde794a4f28e0b47 100644 (file)
@@ -126,7 +126,7 @@ function removeUser (req: express.Request, res: express.Response, next: express.
     .then(user => user.destroy())
     .then(() => res.sendStatus(204))
     .catch(err => {
-      logger.error('Errors when removed the user.', { error: err })
+      logger.error('Errors when removed the user.', err)
       return next(err)
     })
 }
index fcbd5465f16c77e95be4ca498a8488ecc461823b..3b1b7f58e07583ae71663fb6a38002d3a8b20c7e 100644 (file)
@@ -90,7 +90,7 @@ function reportVideoAbuse (req: express.Request, res: express.Response) {
   })
   .then((videoInstance: VideoInstance) => logger.info('Abuse report for video %s created.', videoInstance.name))
   .catch(err => {
-    logger.debug('Cannot update the video.', { error: err })
+    logger.debug('Cannot update the video.', err)
     throw err
   })
 }
index e4be6f0f9cb8d11d7763dfbd4a7d1633e50ba946..d8f2068ec547c4469f31561f0e3bfd20ebd1a8a0 100644 (file)
@@ -35,7 +35,7 @@ function addVideoToBlacklist (req: express.Request, res: express.Response, next:
   db.BlacklistedVideo.create(toCreate)
     .then(() => res.type('json').status(204).end())
     .catch(err => {
-      logger.error('Errors when blacklisting video ', { error: err })
+      logger.error('Errors when blacklisting video ', err)
       return next(err)
     })
 }
index ed1f21d666050696388549bade5564b42796005a..3532c753eb4417f1d3c87735aba5754b5ca757fb 100644 (file)
@@ -63,7 +63,7 @@ const storage = multer.diskStorage({
         cb(null, filename + '.' + extension)
       })
       .catch(err => {
-        logger.error('Cannot generate random string for file name.', { error: err })
+        logger.error('Cannot generate random string for file name.', err)
         throw err
       })
   }
@@ -304,7 +304,7 @@ function updateVideo (req: express.Request, res: express.Response) {
     logger.info('Video with name %s updated.', videoInstance.name)
   })
   .catch(err => {
-    logger.debug('Cannot update the video.', { error: err })
+    logger.debug('Cannot update the video.', err)
 
     // Force fields we want to update
     // If the transaction is retried, sequelize will think the object has not changed
@@ -333,7 +333,7 @@ function getVideo (req: express.Request, res: express.Response, next: express.Ne
         }
         return quickAndDirtyUpdateVideoToFriends(qaduParams)
       })
-      .catch(err => logger.error('Cannot add view to video %d.', videoInstance.id, { error: err }))
+      .catch(err => logger.error('Cannot add view to video %d.', videoInstance.id, err))
   } else {
     // Just send the event to our friends
     const eventParams = {
@@ -359,7 +359,7 @@ function removeVideo (req: express.Request, res: express.Response, next: express
   videoInstance.destroy()
     .then(() => res.type('json').status(204).end())
     .catch(err => {
-      logger.error('Errors when removed the video.', { error: err })
+      logger.error('Errors when removed the video.', err)
       return next(err)
     })
 }
index 3d119d98baca61c9c246a290c609db046569848d..dfb5a450f857e7644c6e8f98f2fc0b00cb23b00e 100644 (file)
@@ -143,7 +143,7 @@ function rateVideo (req: express.Request, res: express.Response) {
   .then(() => logger.info('User video rate for video %s of user %s updated.', videoInstance.name, userInstance.username))
   .catch(err => {
     // This is just a debug because we will retry the insert
-    logger.debug('Cannot add the user video rate.', { error: err })
+    logger.debug('Cannot add the user video rate.', err)
     throw err
   })
 }
index f761cfb89813b928e9c671214b89530eef1e0a37..e174dc3e960594ee7e6e2412ec09b5f6d9f9bd02 100644 (file)
@@ -17,7 +17,7 @@ function retryTransactionWrapper (functionToRetry: (... args) => Promise<any>, o
   )
   .catch(err => {
     // Do not throw the error, continue the process
-    logger.error(options.errorMessage, { error: err })
+    logger.error(options.errorMessage, err)
   })
 }
 
index 0c73e853909b9484e383b0bc011ae84a65c03d43..89aef99c48e43a0c3d1195de7b86f6380bc97a77 100644 (file)
@@ -30,7 +30,7 @@ function checkSignature (publicKey: string, data: string, hexSignature: string)
     try {
       dataString = JSON.stringify(data)
     } catch (err) {
-      logger.error('Cannot check signature.', { error: err })
+      logger.error('Cannot check signature.', err)
       return false
     }
   }
@@ -51,7 +51,7 @@ function sign (data: string|Object) {
     try {
       dataString = JSON.stringify(data)
     } catch (err) {
-      logger.error('Cannot sign data.', { error: err })
+      logger.error('Cannot sign data.', err)
       return Promise.resolve('')
     }
   }
index c24839cb6ad28e76bc4055ee767d8ef53fe2917b..3487addbeb9f2d8ac8db66b0299047a5c0e06527 100644 (file)
@@ -180,7 +180,7 @@ function quitFriends () {
       }, { concurrency: REQUESTS_IN_PARALLEL })
       .then(() => pods)
       .catch(err => {
-        logger.error('Some errors while quitting friends.', { err: err })
+        logger.error('Some errors while quitting friends.', err)
         // Don't stop the process
       })
     })
@@ -215,7 +215,7 @@ function sendOwnedVideosToPod (podId: number) {
             return createRequest(options)
           })
           .catch(err => {
-            logger.error('Cannot convert video to remote.', { error: err })
+            logger.error('Cannot convert video to remote.', err)
             // Don't break the process
             return undefined
           })
@@ -344,7 +344,7 @@ function makeRequestsToWinningPods (cert: string, podsList: PodInstance[]) {
               sendOwnedVideosToPod(podCreated.id)
             })
             .catch(err => {
-              logger.error('Cannot add friend %s pod.', pod.host, { error: err })
+              logger.error('Cannot add friend %s pod.', pod.host, err)
             })
         } else {
           logger.error('Status not 200 for %s pod.', pod.host)
index e829ca813c5c1ff1170c07de5e674b64d456dc2d..eeb2d57b04d0d04b19ff60d1b8174630c292ba5c 100644 (file)
@@ -10,7 +10,7 @@ function process (data: { id: string }) {
 }
 
 function onError (err: Error, jobId: number) {
-  logger.error('Error when transcoding video file in job %d.', jobId, { error: err })
+  logger.error('Error when transcoding video file in job %d.', jobId, err)
   return Promise.resolve()
 }
 
index 248dc7978e4157d0769e0fbf22009c0e074a7397..2ae732b0f8368f6b292dfc8ef8aeebe78b947080 100644 (file)
@@ -51,13 +51,13 @@ class JobScheduler {
                 // Optimization: we could use "drain" from queue object
                 return setTimeout(next, JOBS_FETCHING_INTERVAL)
               })
-              .catch(err => logger.error('Cannot list pending jobs.', { error: err }))
+              .catch(err => logger.error('Cannot list pending jobs.', err))
           },
 
-          err => logger.error('Error in job scheduler queue.', { error: err })
+          err => logger.error('Error in job scheduler queue.', err)
         )
       })
-      .catch(err => logger.error('Cannot list pending jobs.', { error: err }))
+      .catch(err => logger.error('Cannot list pending jobs.', err))
   }
 
   createJob (transaction: Sequelize.Transaction, handlerName: string, handlerInputData: object) {
@@ -95,7 +95,7 @@ class JobScheduler {
         },
 
         err => {
-          logger.error('Error in job handler %s.', job.handlerName, { error: err })
+          logger.error('Error in job handler %s.', job.handlerName, err)
           return this.onJobError(jobHandler, job, err)
         }
       )
@@ -123,7 +123,7 @@ class JobScheduler {
   }
 
   private cannotSaveJobError (err: Error) {
-    logger.error('Cannot save new job state.', { error: err })
+    logger.error('Cannot save new job state.', err)
   }
 }
 
index 128fc5b28eb92f9098fa697619c79d94a8888e27..0a9ff65d56d1b428c9676f0192a3b0c400f05202 100644 (file)
@@ -84,7 +84,7 @@ abstract class AbstractRequestScheduler <T> {
         }
       })
       .catch(err => {
-        logger.error('Error sending secure request to %s pod.', toPod.host, { error: err })
+        logger.error('Error sending secure request to %s pod.', toPod.host, err)
 
         throw err
       })
@@ -124,7 +124,7 @@ abstract class AbstractRequestScheduler <T> {
             })
             .catch(err => {
               badPods.push(requestToMake.toPod.id)
-              logger.info('Cannot make request to %s.', toPod.host, { error: err })
+              logger.info('Cannot make request to %s.', toPod.host, err)
             })
         }, { concurrency: REQUESTS_IN_PARALLEL }).then(() => ({ goodPods, badPods }))
       })
index 8927d53bb899031ec4d0e254e65a67a5b54b22c8..3945ace200aa9bc1a5a0ec24bae5c9bff094c650 100644 (file)
@@ -87,7 +87,7 @@ class RequestScheduler extends AbstractRequestScheduler<RequestsGrouped> {
   afterRequestsHook () {
     // Flush requests with no pod
     this.getRequestModel().removeWithEmptyTo()
-      .catch(err => logger.error('Error when removing requests with no pods.', { error: err }))
+      .catch(err => logger.error('Error when removing requests with no pods.', err))
   }
 }
 
index d545b3e58f55f4ff150a2078e400646b520346f3..fe04904368ceb43943a704d4e17c5d94979d6157 100644 (file)
@@ -14,7 +14,7 @@ const oAuthServer = new OAuthServer({
 function authenticate (req: express.Request, res: express.Response, next: express.NextFunction) {
   oAuthServer.authenticate()(req, res, function (err) {
     if (err) {
-      logger.error('Cannot authenticate.', { error: err })
+      logger.error('Cannot authenticate.', err)
       return res.sendStatus(500)
     }
 
index da7fc2bd6eb423e5a2e9c5ab2418009fc3b64513..022fd7f9a04267938b3b89bd87cecaa369c5b3f1 100644 (file)
@@ -29,7 +29,7 @@ function makeFriendsValidator (req: express.Request, res: express.Response, next
         return next()
       })
       .catch(err => {
-        logger.error('Cannot know if we have friends.', { error: err })
+        logger.error('Cannot know if we have friends.', err)
         res.sendStatus(500)
       })
   })
@@ -52,7 +52,7 @@ function podsAddValidator (req: express.Request, res: express.Response, next: ex
         return next()
       })
       .catch(err => {
-        logger.error('Cannot load pod by host.', { error: err })
+        logger.error('Cannot load pod by host.', err)
         res.sendStatus(500)
       })
   })
index c06735047eca51b70898d40f0bf0ff4cf87b4db8..9db4fff7750954028b261accd4a5bcd401c52d51 100644 (file)
@@ -20,7 +20,7 @@ function usersAddValidator (req: express.Request, res: express.Response, next: e
         next()
       })
       .catch(err => {
-        logger.error('Error in usersAdd request validator.', { error: err })
+        logger.error('Error in usersAdd request validator.', err)
         return res.sendStatus(500)
       })
   })
@@ -41,7 +41,7 @@ function usersRemoveValidator (req: express.Request, res: express.Response, next
         next()
       })
       .catch(err => {
-        logger.error('Error in usersRemove request validator.', { error: err })
+        logger.error('Error in usersRemove request validator.', err)
         return res.sendStatus(500)
       })
   })
@@ -71,7 +71,7 @@ function usersVideoRatingValidator (req: express.Request, res: express.Response,
         next()
       })
       .catch(err => {
-        logger.error('Error in user request validator.', { error: err })
+        logger.error('Error in user request validator.', err)
         return res.sendStatus(500)
       })
   })
index ec452cade5482abcbfb073b6b56c99ef45f5d976..0134664877c801aebc4d60e44b92143855d6aade 100644 (file)
@@ -33,7 +33,7 @@ function videosAddValidator (req: express.Request, res: express.Response, next:
         next()
       })
       .catch(err => {
-        logger.error('Error in getting duration from file.', { error: err })
+        logger.error('Error in getting duration from file.', err)
         res.status(400).send('Cannot retrieve metadata of the file.')
       })
   })
@@ -164,7 +164,7 @@ function checkVideoExists (id: string, res: express.Response, callback: () => vo
     callback()
   })
   .catch(err => {
-    logger.error('Error in video request validator.', { error: err })
+    logger.error('Error in video request validator.', err)
     return res.sendStatus(500)
   })
 }
@@ -190,7 +190,7 @@ function checkUserCanDeleteVideo (userId: number, res: express.Response, callbac
       callback()
     })
     .catch(err => {
-      logger.error('Error in video request validator.', { error: err })
+      logger.error('Error in video request validator.', err)
       return res.sendStatus(500)
     })
 }
index 8c68834651f5603ee85bcc8257d32e73c61bb67a..a0a13aab73ca455c22e1f2415c3a881854d0ba56 100644 (file)
@@ -114,7 +114,7 @@ getByRefreshTokenAndPopulateClient = function (refreshToken: string) {
 
     return tokenInfos
   }).catch(function (err) {
-    logger.info('getRefreshToken error.', { error: err })
+    logger.info('getRefreshToken error.', err)
   })
 }
 
index 9209380fc058e6d6583c02a941dec6fe791badaa..62d9e3c6c851a4ba99b383a3e65c090c8c9025f8 100644 (file)
@@ -216,7 +216,7 @@ updatePodsScore = function (goodPods: number[], badPods: number[]) {
 
   if (goodPods.length !== 0) {
     incrementScores(goodPods, PODS_SCORE.BONUS).catch(err => {
-      logger.error('Cannot increment scores of good pods.', { error: err })
+      logger.error('Cannot increment scores of good pods.', err)
     })
   }
 
@@ -224,7 +224,7 @@ updatePodsScore = function (goodPods: number[], badPods: number[]) {
     incrementScores(badPods, PODS_SCORE.MALUS)
       .then(() => removeBadPods())
       .catch(err => {
-        if (err) logger.error('Cannot decrement scores of bad pods.', { error: err })
+        if (err) logger.error('Cannot decrement scores of bad pods.', err)
       })
   }
 }
@@ -246,6 +246,6 @@ function removeBadPods () {
       }
     })
     .catch(err => {
-      logger.error('Cannot remove bad pods.', { error: err })
+      logger.error('Cannot remove bad pods.', err)
     })
 }
index 3d71e8d9e6fa2adb24a0a1e60326a22162c49094..47d3cad1de4791205a609242e214eae5801bc320 100644 (file)
@@ -553,7 +553,7 @@ transcodeVideofile = function (this: VideoInstance) {
           .catch(err => {
             // Autodesctruction...
             video.destroy().asCallback(function (err) {
-              if (err) logger.error('Cannot destruct video after transcoding failure.', { error: err })
+              if (err) logger.error('Cannot destruct video after transcoding failure.', err)
             })
 
             return rej(err)