From 34bc734806d3004938217146543f9a144eb70ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jordi=20Gime=CC=81nez=20Ga=CC=81mez?= Date: Thu, 14 Mar 2019 15:30:18 +0100 Subject: [PATCH] fixing caller info collection on manual log (fixes #6) --- platforms/ios/BFCDVSDKBugfender.m | 2 +- www/bugfender.js | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/platforms/ios/BFCDVSDKBugfender.m b/platforms/ios/BFCDVSDKBugfender.m index 89a4400..076c31c 100644 --- a/platforms/ios/BFCDVSDKBugfender.m +++ b/platforms/ios/BFCDVSDKBugfender.m @@ -108,7 +108,7 @@ - (void)log:(CDVInvokedUrlCommand*)command { NSInteger lineNumber = 0; if([[command.arguments objectAtIndex:0] isKindOfClass:NSNumber.class]) - [[command.arguments objectAtIndex:0] unsignedLongLongValue]; + lineNumber = [[command.arguments objectAtIndex:0] unsignedLongLongValue]; NSString* method = [command.arguments objectAtIndex:1]; NSString* fileName = [command.arguments objectAtIndex:2]; NSString* levelString = [command.arguments objectAtIndex:3]; diff --git a/www/bugfender.js b/www/bugfender.js index 88405ed..6fb86cd 100644 --- a/www/bugfender.js +++ b/www/bugfender.js @@ -77,15 +77,28 @@ getPrintToConsole: function() { }; module.exports.Bugfender = module.exports; +/* example on iOS: +logWithLevel@file:///Users/x/Library/Developer/CoreSimulator/Devices/E7784688-3697-4254-9B15-D0EB21E7927E/data/Containers/Bundle/Application/C101081E-FB05-438F-AF1F-6CC1F64AF220/HelloCordova.app/www/plugins/cordova-plugin-bugfender/www/bugfender.js:85:20 +log@file:///Users/x/Library/Developer/CoreSimulator/Devices/E7784688-3697-4254-9B15-D0EB21E7927E/data/Containers/Bundle/Application/C101081E-FB05-438F-AF1F-6CC1F64AF220/HelloCordova.app/www/plugins/cordova-plugin-bugfender/www/bugfender.js:49:14 +onDeviceReady@file:///Users/x/Library/Developer/CoreSimulator/Devices/E7784688-3697-4254-9B15-D0EB21E7927E/data/Containers/Bundle/Application/C101081E-FB05-438F-AF1F-6CC1F64AF220/HelloCordova.app/www/js/index.js:31:16 + +* example on Android: +Error + at logWithLevel (file:///android_asset/www/plugins/cordova-plugin-bugfender/www/bugfender.js:85:11) + at Object.log (file:///android_asset/www/plugins/cordova-plugin-bugfender/www/bugfender.js:49:2) + at Object.onDeviceReady (file:///android_asset/www/js/index.js:31:13) +*/ + var printToConsole = true; -var stacktraceLine = /(?:([^@]*)@)?(?:.*\/)?([^:]*)(?::(\d*))?/; +var stacktraceLine = /(?:\W*at )?(?:(?:[^.]+\.)?([^@ ]*)[ @])?(?:.*\/)?([^:]*)(?::(\d*))?/; var logWithLevel = function(level, args) { checkLoaded(); - var st = new Error().stack; - var match = stacktraceLine.exec(st[5]); + var st = new Error().stack.split('\n'); + var caller = st[st[0].indexOf('Error') == 0 ? 3 : 2]; + var match = stacktraceLine.exec(caller); var func = ""; var file = ""; - var line = ""; + var line = 0; if(match != null) { if(match.length >= 1 && match[1] != null) func = match[1];