added RCTLog.logToConsole() to force log regardless of debugger connection

Summary: This adds an alternative logging method that can be called from native side. `logIfNoLoggingHook()` will pass the message to console only if there's Chrome debugger attached. This new method sends the message to console regardless to notify the developers better.

Reviewed By: yungsters

Differential Revision: D4669663

fbshipit-source-id: 3940816dadd08d450f066b7223f6d26a38a70921
This commit is contained in:
Kevin Gozali 2017-03-07 19:33:44 -08:00 committed by Facebook Github Bot
parent 7eded2d8ed
commit 1a8d216458
1 changed files with 17 additions and 11 deletions

View File

@ -11,11 +11,11 @@
*/
'use strict';
var BatchedBridge = require('BatchedBridge');
const BatchedBridge = require('BatchedBridge');
var invariant = require('fbjs/lib/invariant');
const invariant = require('fbjs/lib/invariant');
var levelsMap = {
const levelsMap = {
log: 'log',
info: 'info',
warn: 'warn',
@ -25,18 +25,24 @@ var levelsMap = {
class RCTLog {
// level one of log, info, warn, error, mustfix
static logIfNoNativeHook() {
var args = Array.prototype.slice.call(arguments);
var level = args.shift();
var logFn = levelsMap[level];
static logIfNoNativeHook(...args) {
if (typeof global.nativeLoggingHook === 'undefined') {
// We already printed in xcode, so only log here if using a js debugger
RCTLog.logToConsole(...args);
}
return true;
}
// Log to console regardless of nativeLoggingHook
static logToConsole(level, ...args) {
const logFn = levelsMap[level];
invariant(
logFn,
'Level "' + level + '" not one of ' + Object.keys(levelsMap)
);
if (typeof global.nativeLoggingHook === 'undefined') {
// We already printed in xcode, so only log here if using a js debugger
console[logFn].apply(console, args);
}
console[logFn](...args);
return true;
}