WeCha's xlog for react-native. Xlog is a reliable log component with high-performance.
Wechat's Xlog framework for RN.
You can send log to Xlog, and manager Xlog lifecycle. Handle js/native crash log in production builds.
attention: you will see the crash log only when you restart your app
npm i -S react-native-xlog
run react-native link react-native-xlog
to link the library.
if
Header Search Paths
does not have the$(SRCROOT)/../node_modules/react-native/React
+recursive
, linking may fail.
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
compile "com.tencent.mars:mars-xlog:1.0.4" //<--add here
compile project(":react-native-xlog") //<--add here
}
include ':react-native-xlog'
project(':react-native-xlog').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-xlog/android')
ext {
MARS_XLOG_VERSION_NAME='1.0.4'
MARS_XLOG_VERSION_NAME_SUFFIX = ''
}
...
import com.engsshi.xlog.XLogPackage;
...
public class MainApplication extends Application implements ReactApplication {
...
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
protected boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new XLogPackage() // <--add here
);
}
};
...
}
...
import android.os.Environment;
import com.engsshi.xlog.XLogModule;
import com.engsshi.xlog.XLogSetting;
...
public class MainApplication extends Application implements ReactApplication {
...
@Override
public void onCreate() {
super.onCreate();
...
final String appName = this.getString(R.string.app_name);
final String logPath = Environment.getExternalStorageDirectory().getAbsolutePath() + '/' + appName + "/log";
XLogSetting xLogSetting = XLogSetting.builder()
.setLevel(XLogSetting.LEVEL_DEBUG)
.setPath(logPath)
.setCacheDir("")
.setAppenderMode(XLogSetting.APPENDER_MODE_ASYNC)
.setNamePrefix(appName)
.setOpenConsoleLog(true)
.build();
XLogModule.init(xLogSetting)
//XLogModule.initWithNativeCrashInclude(xLogSetting, this);
...
}
...
}
public class MainApplication extends Application implements ReactApplication {
...
@Override
public void onCreate() {
// xlog init here ....
...
XLogModule.open(); //optional, for this, you can log before into RNView
...
}
...
}
import Xlog from 'react-native-xlog';
Xlog.verbose('tag', 'log');
Xlog.debug('tag', 'log');
Xlog.info('tag', 'log');
Xlog.warn('tag', 'log');
Xlog.error('tag', 'log');
Xlog.fatal('tag', 'log');
Use this script to decode log file:
python decode_mars_log_file.py ~/Downloads/log/myapp_20170723.xlog