/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format * @flow strict-local */ 'use strict'; const getDevServer = require('./getDevServer'); let ID = 0; function logToConsole( level: 'trace' | 'info' | 'warn' | 'log', data: Array, ) { let body; try { body = JSON.stringify({id: ID++, level, data}); } catch (error) { body = JSON.stringify({id: ID++, level, data: [error.message]}); } fetch(getDevServer().url + 'log-to-console', { method: 'POST', body, }).catch(e => { // ...Oh well! // If metro is running, logs should be sent to metro. // If metro is NOT running, this will throw an exception every time... and // those exceptions will be caught and logged, which will throw another // exception, etc, causing infinite exception loop which affects UI perf. // If we swallow silently here, that won't happen. }); } module.exports = logToConsole;