有时 console.log 显示在 log-ios 中,有时不显示
Sometimes console.log shows in log-ios sometimes it doesn't
我在一个终端中有 运行 react-native start
,然后在另一个终端中有 react-native ios-run
。我最初的 console.log
很少出现,有时会出现。
很多次,我随机看到:
LOG MESSAGE QUOTA EXCEEDED - SOME MESSAGES FROM THIS PROCESS HAVE BEEN DISCARDED
我的 console.log
是否被丢弃了?我尝试清除控制台以更清楚地查看它,但我也找不到清除控制台的方法。
在 Android 上,我不介意缺少 console.log
。
react-native 使用 syslog 守护进程记录信息。该守护进程试图防止向日志发送垃圾邮件(DoS 攻击)。这些限制是基于每个进程设置的。
简单的解决方案是 stop/start 模拟器,您将获得不受先前行为限制的新进程。
另一个解决方案是禁用 syslogd 限制,这在很大程度上取决于您的操作系统。
我发现JavascriptCore
引擎不会自动将console.log
重定向到XCode output panel
或系统内置Console.App
,更不用说自毁了log-ios
命令。
无需在浏览器中进行远程调试即可查看 console.log 的唯一方法是我们自己重定向(绑定)它:
//Add this headers
#import <JavaScriptCore/JavaScriptCore.h>
#import <jschelpers/JavaScriptCore. h>
#import <React/RCTBridge+Private.h>
...
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;
...
...
[self.window makeKeyAndVisible];
::sleep(2); //<---!!!!!see below
JSGlobalContextRef globalContext = rootView.bridge.jsContextRef;
JSContext *context = [JSC_JSContext(globalContext) contextWithJSGlobalContextRef:globalContext];
context[@"console"][@"log"] = ^(NSString *message) {
NSLog(@"Javascript log: %@",message);
};
return YES;
}
注意:reactInstance
中的JSContext
是在另一个线程中创建的,我不知道如何获取加载事件(仅在我的project, 因为我不喜欢修改 react-native 引擎), 在这里等待一段时间进行测试。
我在一个终端中有 运行 react-native start
,然后在另一个终端中有 react-native ios-run
。我最初的 console.log
很少出现,有时会出现。
很多次,我随机看到:
LOG MESSAGE QUOTA EXCEEDED - SOME MESSAGES FROM THIS PROCESS HAVE BEEN DISCARDED
我的 console.log
是否被丢弃了?我尝试清除控制台以更清楚地查看它,但我也找不到清除控制台的方法。
在 Android 上,我不介意缺少 console.log
。
react-native 使用 syslog 守护进程记录信息。该守护进程试图防止向日志发送垃圾邮件(DoS 攻击)。这些限制是基于每个进程设置的。
简单的解决方案是 stop/start 模拟器,您将获得不受先前行为限制的新进程。
另一个解决方案是禁用 syslogd 限制,这在很大程度上取决于您的操作系统。
我发现JavascriptCore
引擎不会自动将console.log
重定向到XCode output panel
或系统内置Console.App
,更不用说自毁了log-ios
命令。
无需在浏览器中进行远程调试即可查看 console.log 的唯一方法是我们自己重定向(绑定)它:
//Add this headers
#import <JavaScriptCore/JavaScriptCore.h>
#import <jschelpers/JavaScriptCore. h>
#import <React/RCTBridge+Private.h>
...
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;
...
...
[self.window makeKeyAndVisible];
::sleep(2); //<---!!!!!see below
JSGlobalContextRef globalContext = rootView.bridge.jsContextRef;
JSContext *context = [JSC_JSContext(globalContext) contextWithJSGlobalContextRef:globalContext];
context[@"console"][@"log"] = ^(NSString *message) {
NSLog(@"Javascript log: %@",message);
};
return YES;
}
注意:reactInstance
中的JSContext
是在另一个线程中创建的,我不知道如何获取加载事件(仅在我的project, 因为我不喜欢修改 react-native 引擎), 在这里等待一段时间进行测试。