首页 > 解决方案 > 在 React Native 的桥接 Java 方法中使用 Logback

问题描述

我正在尝试修改工作应用程序。我从这个存储库安装了 android 的 logback -> https://github.com/tony19/logback-android然后我在 java 文件中创建了桥接方法,该文件最初是桥接的,并且包含其他 @reactmethod 方法。

这是我的java代码(不是完整的代码,只是logback的东西):

package com.eeg_project.components.classifier;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {

    // Logback
    private static Logger logger = LoggerFactory.getLogger(ClassifierModule.class);

    @ReactMethod
    public void startSaveCSV() {

        //test ints
        int a = 2;
        int b = 2;

        String csvLine = a + "," + b;
        logger.info(csvLine);
    }
}

我的 logback.xml 配置如下:

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{dd-MM-yyyy HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n
            </Pattern>
        </layout>
    </appender>
    <appender name="FILE-APPENDER" class="ch.qos.logback.core.FileAppender">
        <file>/storage/emulated/0/Download/Data.csv</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %msg%n
            </Pattern>
        </encoder>
    </appender>
    <logger name="com.eeg_project.components.classifier.ClassifierModule" level="info" additivity="false">
        <appender-ref ref="FILE-APPENDER" />
    </logger>
    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration> 

这里是 recat native 从 java 调用桥接方法的代码(sandboxbutton 是原始的应用程序按钮,我只是改变了它的功能):

import Classifier from "../native/Classifier";

  }

   <SandboxButton onPress={() => Classifier.startSaveCSV()}>CSV</SandboxButton>

应用程序编译成功,但是当我点击我的按钮时出现问题。什么都没有发生:(应用程序甚至没有创建我的 Data.csv 文件..

有什么懒惰的吗?

标签: javaandroidreact-nativelogginglogback

解决方案


logback.xml 的配置错误。这是我的解决方案:

<configuration>
  <!-- Create a file appender for a log in the application's data directory -->
  <appender name="file" class="ch.qos.logback.core.FileAppender">
    <file>/data/data/com.eeg_project/files/log/eegdata.log</file>
    <encoder>
      <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- Write INFO (and higher-level) messages to the log file -->
  <root level="INFO">
    <appender-ref ref="file" />
  </root>
</configuration>

推荐阅读