[logging] How to do logging in React Native?

How can I log a variable in React Native, like using console.log when developing for web?

This question is related to logging react-native

The answer is


Use console.log, console.warn etc.

As of React Native 0.29 you can simply run the following to see logs in the console:

$ react-native log-ios
$ react-native log-android

Chrome Devtool is the best and easiest way for logging and debugging.


This is where Chrome Developer Tools are your friend.

The following steps should get you to the Chrome Developer Tools, where you will be able to see your console.log statements.

Steps

  1. Install Google Chrome, if you have not already
  2. Run app using react-native run-android or react-native run-ios
  3. Open developer menu
    • Mac: ?+D for iOS or ?M for Android iOS
    • Windows/Linux: Shake Android phone
  4. Select Debug JS Remotely
  5. This should launch the debugger in Chrome
  6. In Chrome: Tools -> More Tools -> Developer Options and make sure you are on the console tab

Now whenever a console.log statement is executed, it should appear in Chrome Dev Tools. The official documentation is here.


Something that just came out about a month ago is "Create React Native App," an awesome boilerplate that allows you (with minimal effort) to show what your app looks like live on your mobile device (ANY with a camera) using the Expo app. It not only has live updates, but it will allow you to see the console logs in your terminal just like when developing for the web, rather than having to use the browser like we did with React Native before.

You would, of course, have to make a new project with that boilerplate... but if you need to migrate your files over, that shouldn't be a problem. Give it a shot.

Edit: Actually it doesn't even require a camera. I said that for scanning a QR code, but you can also type out something to sync it up with your server, not just a QR code.


Development Time Logging

For development time logging, you can use console.log(). One important thing, if you want to disable logging in production mode, then in Root Js file of app, just assign blank function like this - console.log = {} It will disable whole log publishing throughout app altogether, which actually required in production mode as console.log consumes time.


Run Time Logging

In production mode, it is also required to see logs when real users are using your app in real time. This helps in understanding bugs, usage and unwanted cases. There are many 3rd party paid tools available in the market for this. One of them which I've used is by Logentries

The good thing is that Logentries has got React Native Module as well. So, it will take very less time for you to enable Run time logging with your mobile app.


Use console.debug("text");

You will see the logs inside the terminal.

Steps:

  • Run the application:
react-native run-ios        # For iOS
react-native run-android    # For Android
  • Run the logger:
react-native log-ios        # For iOS
react-native log-android    # For Android

You can use Reactotron also, it will give you lot more functionality than just logging. https://github.com/infinitered/reactotron


I had the same issue: console messages were not appearing in XCode's debug area. In my app I did cmd-d to bring up the debug menu, and remembered I had set "Debug in Safari" on.

I turned this off, and some messages were printed to the output message, but not my console messages. However, one of the log messages said:

__DEV__ === false, development-level warning are OFF, performance optimizations are ON"

This was because I had previously bundled my project for testing on a real device with the command:

react-native bundle --minify

This bundled without "dev-mode" on. To allow dev messages,include the --dev flag:

react-native bundle --dev

And console.log messages are back! If you aren't bundling for a real device, don't forget to re-point jsCodeLocation in AppDelegate.m to localhost (I did!).


Every developer facing this issue of debugging with the react native, even I faced too and I refer this and solution is sufficient for me at initial level, it cover few ways that help us to try and use what ever comfortable with us

  1. Debugging with console.log
  2. Debugging code (logic) with Nuclide
  3. Debugging code(logic) with Chrome
  4. Use Xcode to debug GUI

https://codeburst.io/react-native-debugging-tools-3a24e4e40e4


Visual Studio Code has a decent debug console that can show your console.log.

enter image description here

VS Code is, more often than not, React Native friendly.


Pre React Native 0.29, run this in the console:

adb logcat *:S ReactNative:V ReactNativeJS:V

Post React Native 0.29, run:

react-native log-ios

or

react-native log-android

As Martin said in another answer.

This shows all console.log(), errors, notes, etc. and causes zero slow down.


There are two options to debug or get output of your react native application when using

Emulator or Real Device

For First Using Emulator: use

react-native log-android or react-native log-ios

to get the log output

on real device.shake your device

so the menu will come from where you select remote debug and it will open this screen in your browser. so you can see your log output in console tab.enter image description here


You use the same thing that is used for regular web. The console command also works in this case. For example, you can use console.log(), console.warn(), console.clear() etc.

You can use Chrome Developer to use the console command when you're logging while you are running your React Native app.


  1. Put console.log("My log text") in your code
  2. go to your command Line tools
  3. position oneself in its development folder

In Android:

  • write this command : React-native log-android

In IOS:

  • write this command : React-native log-ios

There are multiple ways to log. console.warn() will through the log in the mobile screen itself.It can be useful if you want to log small things and dont want to bother opening console. Other is console.log(), for which you will have to open browser's console to view the logs.With the newer react native 0.62+ you can see the log in node itself. So they've made it pretty easier to view logs in newer version.


There are 3 methods that I use to debug when developing React Native apps:

  1. console.log(): shows in console
  2. console.warn(): shows in yellow box bottom of application
  3. alert(): shows as a prompt just like it does in web

There is a debugger tool that you can see you console message on top of you device screen. So you don't need connecting to any remote debugger that will slow down your animation or anything. Can check here:

https://github.com/fwon/RNVConsole

Or use expo to have a try https://snack.expo.io/SklJHMS3S

log


There are several ways to achieve this, I am listing them and including cons in using them also. You can use:

  1. console.log and view logging statements on, without opting out for remote debugging option from dev tools, Android Studio and Xcode. or you can opt out for remote debugging option and view logging on chrome dev tools or vscode or any other editor that supports debugging, you have to be cautious as this will slow down the process as a whole.
  2. You can use console.warn but then your mobile screen would be flooded with those weird yellow boxes which might or might not be feasible according to your situation.
  3. Most effective method that I came across is to use a third party tool, Reactotron. A simple and easy to configure tool that enables you to see each logging statement of different levels (error, debug, warn, etc.). It provides you with the GUI tool that shows all the logging of your app without slowing down the performance.

If you are on osx and using an emulator, you can view your console.logs directly in safari web inspector.

Safari => Development => Simulator - [your simulator version here] => JSContext


enter image description hereUse react native debugger for logging and redux store https://github.com/jhen0409/react-native-debugg

Just download it and run as software then enable Debug mode from the simulator.

It supports other debugging feature just like element in chrome developer tools, which helps to see the styling provided to any component.

Last complete support for redux dev tools


console.log() is the best and simple way to see your log on console when you use remote js debugger from your developer menu


Users with Windows and Android Studio:

You're going to find it under Logcat in Android Studio. There are a lot of logging messages that show up here, so it may be easier for you to create a filter for "ReactNativeJS" which will only show your console.log messages that are created inside your react native application.


react-native-xlog module that can help you,is WeChat's Xlog for react-native. That can output in Xcode console and log file, the Product log files can help you debug.

Xlog.verbose('tag', 'log');
Xlog.debug('tag', 'log');
Xlog.info('tag', 'log');
Xlog.warn('tag', 'log');
Xlog.error('tag', 'log');
Xlog.fatal('tag', 'log');

I prefer to recommend you guys using React Native Debugger. You can download and install it by using this command.

brew update && brew cask install react-native-debugger

or

Just check the link below.

https://github.com/jhen0409/react-native-debugger

Happy Hacking!


console.log() is the easy way to debug your code but it need to be use with arrow function or bind() while displaying any state. You may find the link useful.


You can use remote js debugly option from your device or you can simply use react-native log-android and react-native log-ios for ios.


There is normally two scenarios where we need debugging.

  1. When we facing issues related to data and we want to check our data and debugging related to data in that case console.log('data::',data)

    and debug js remotely is the best option.

  2. Other case is the UI and styles related issues where we need to check styling of the component in that case react-dev-tools is the best option.

    both of the methods mention here.


If you use ios simulator you can open system console log on MAC

? + space and type "console" -> press "Enter" to open system console log then select your simulator


Where you want to log data use

console.log("data")

And to print this log in terminal use command for android

npx react-native log-android

and for iOS

npx react-native log-ios


Its so simple to get logs in React-Native

Use console.log and console.warn

console.log('character', parameter)

console.warn('character', parameter)

This log you can view in browser console. If you want to check device log or say production APK log you can use

adb logcat

adb -d logcat

You can do this in 2 methods

1> by using warn

console.warn("somthing " +this.state.Some_Sates_of_variables);

2> By using Alert This is not good each times if it reaches alert then each time pop will be opened so if doing looping means not preferable to use this

Import the {Alert} from 'react-native'
   // use this alert
   Alert.alert("somthing " +this.state.Some_Sates_of_variables);

console.log can be used for any JS project. If you running the app in localhost then obviously it is similar any to any javascript project. But while using simulator or any device, connect that simulator to our localhost and we can see in the console.


Just console.log('debug');

And run it you can see the log in the terminal/cd prompt .


Press [command + control + Z] in Xcode Simulator, choose Debug JS Remotely, then press [command + option + J] to open Chrome developer tools.

Xcode Simulator Img

refer:Debugging React Native Apps