You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native模拟器中写入Apple统一日志?

在React Native中写入Apple统一日志的实现方法

纯JavaScript层无法直接调用Apple的os_log接口,必须通过React Native原生桥接来实现和Swift中os_log一致的效果,具体步骤如下:

一、iOS原生端实现日志桥接模块

  1. 在你的RN项目的ios目录下,新建一个Swift文件(比如OSLogBridge.swift),内容如下:
import os.log
import React

@objc(OSLogBridge)
class OSLogBridge: NSObject {
    // 定义日志类别,方便在Console.app中过滤
    private let log = OSLog(subsystem: "com.your-app-bundle-id", category: "RN-OSLog")
    
    @objc
    func logDebug(_ message: String) {
        os_log("%@", log: log, type: .debug, message)
    }
    
    @objc
    func logInfo(_ message: String) {
        os_log("%@", log: log, type: .info, message)
    }
    
    @objc
    func logError(_ message: String) {
        os_log("%@", log: log, type: .error, message)
    }
    
    // 必须实现这个方法,RN才能识别模块
    @objc static func requiresMainQueueSetup() -> Bool {
        return true
    }
}
  1. 修改ios/[YourAppName]/AppDelegate文件注册模块:
    • 若是Objective-C版本,在didFinishLaunchingWithOptions方法里添加:
    #import <React/RCTBridge.h>
    #import <React/RCTBridgeModule.h>
    
    RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
    [bridge.moduleClasses addObject:[OSLogBridge class]];
    
    • 若是Swift版本,在application(_:didFinishLaunchingWithOptions:)里添加:
    let bridge = RCTBridge(delegate: self, launchOptions: launchOptions)
    bridge.moduleClasses.append(OSLogBridge.self)
    

二、JavaScript层封装调用函数

在RN项目的JS代码中,创建一个工具文件(比如osLog.js),封装原生模块的调用:

import { NativeModules } from 'react-native';

const { OSLogBridge } = NativeModules;

export const osLog = {
  debug: (message) => OSLogBridge.logDebug(String(message)),
  info: (message) => OSLogBridge.logInfo(String(message)),
  error: (message) => OSLogBridge.logError(String(message)),
};

之后在需要日志的地方直接调用:

import { osLog } from './osLog';

// 示例调用
osLog.debug('调试信息:用户点击了按钮');
osLog.info('普通信息:接口请求完成');
osLog.error('错误信息:接口请求失败');

三、在Console.app中查看日志

  1. 打开Mac上的Console.app
  2. 在左侧导航栏选择对应的iPhone模拟器或物理设备
  3. 在搜索框输入你定义的日志类别(比如RN-OSLog)或者子系统ID,就能过滤出RN代码写入的日志

内容的提问来源于stack exchange,提问作者Marin Todorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:55:44