Logback logger во внутреннем классе - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть внешний public class ClassifierModule и внутренний public class ClassifierRunnable. Logger, реализованный во внешнем классе, работает нормально. Но когда я пытаюсь реализовать это во внутреннем классе, это не работает вообще. Я имею в виду, нет ошибки, но logback не создает журналы.

Как реализовать регистратор во внутреннем классе? (До сих пор я узнал, что он не должен быть ststic).

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

Вот мой код:

//outer class
public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {

    public ClassifierModule(ReactApplicationContext reactContext) {
        super(reactContext);
        appState = ((MainApplication)reactContext.getApplicationContext());
        }     

    @Override
    public String getName() {
      return "Classifier";
    }

    @ReactMethod
    public void saveLog() {
       logger.info("Hello world");
    }

    //inner class        
    public class ClassifierRunnable implements Runnable {

        public ClassifierRunnable(double[][] buffer) {
            rawBuffer = buffer;
            PSD = new double[NUM_CHANNELS][nbBins];
        }

        private final Logger logger = LoggerFactory.getLogger(ClassifierRunnable.class);

        @Override
        public void run() {
            if(isLogging) {

                int a = 11;
                int b = 24;

                logger.info(a)

            }
    }
}

Мой 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>

1 Ответ

0 голосов
/ 15 января 2019

Если вы хотите добавить уровень журнала для внутренних классов, вам нужно добавить приведенную ниже конфигурацию в файл logback.xml. у меня это сработало.

Поскольку это внутренний класс, его необходимо отделить знаком $ от родительского класса.

<logger name="packagename.ClassifierModule$ClassifierRunnable " level="INFO" additivity="false">
    <appender-ref ref="file" />
</logger>

Надеюсь, это поможет вам с вашей конфигурацией. спасибо

...