Я пытаюсь создать регистратор и приложение для моего проекта, но он должен быть настраиваемым, поэтому я собирался настроить его программно.
Проблема возникает, когда я пытаюсь импортировать "import ch.qos.logback.core.rolling.RollingFileAppender;"
но это выдает мне ошибку:
«Тип ch.qos.logback.core.rolling.RollingFileAppender недоступен»
Странная часть в том, что в строке, которую я использую класс RollingFileAppender, он рекомендует мне тот же импорт.
У меня есть logback-classic-1.3.0-alpha4.jar и logback-core-1.3.0-alpha4.jar в модуле pathp и module-info.jar:
module tool.foo {
requires com.fazecast.jSerialComm;
requires commons.cli;
requires java.desktop;
requires java.xml;
requires java.naming;
requires java.net.http;
requires org.slf4j;
requires swt;
requires ch.qos.logback.core;
requires ch.qos.logback.classic;
requires static org.junit.jupiter.api;
requires static org.junit.jupiter.params;
requires static org.junit.jupiter.engine;
exports com.enterprise.tools.foo;
}
Класс выглядит так:
package com.premium.tools.pamtool.controller;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.rolling.RollingFileAppender;
public class CsvLogger {
public static Logger createLoggerFor(String file) {
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
PatternLayoutEncoder ple = new PatternLayoutEncoder();
ple.setPattern("%msg");
ple.setContext(lc);
ple.start();
RollingFileAppender<ILoggingEvent> fileAppender = new RollingFileAppender<ILoggingEvent>();
fileAppender.setFile(file);
fileAppender.setEncoder(ple);
fileAppender.setContext(lc);
fileAppender.setAppend(false);
fileAppender.start();
Logger logger = (Logger) LoggerFactory.getLogger("CsvLogger");
logger.addAppender(fileAppender);
logger.setLevel(Level.INFO);
logger.setAdditive(false); /* set to true if root should log too */
return logger;
}
}