package comeon.core; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Appender; import ch.qos.logback.core.FileAppender; import com.google.common.eventbus.Subscribe; import com.google.inject.Singleton; import comeon.core.events.UploadDoneEvent; import comeon.model.Media; import comeon.ui.actions.MediaAddedEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Optional; @Singleton public class UploaderReporter { private static final Logger LOGGER = LoggerFactory.getLogger("UPLOAD_REPORTER"); @Subscribe public void logMediaAddition(final MediaAddedEvent event) { LOGGER.info("MEDIA ADDED\n\tTEMPLATE {}\n\tEXT. METADATA {}", event.getBatch().getTemplate(), event.getBatch().getExternalMetadataSource()); event.getBatch().getMedia().forEach(this::log); } private void log(final Media media) { LOGGER.info("MEDIA ADDED\n\tFILE {}", media.getFile()); } @Subscribe public void logUpload(final UploadDoneEvent event) { event.getReports().forEach(this::log); } private void log(final UploadReport report) { LOGGER.info("UPLOAD COMPLETED\n\tFILE {}\n\tSTATE {}", report.getMedia().getFile(), report.getMedia().getState(), report.getCause()); } public Optional<String> findLoggingFileLocation() { final Optional<String> fileLocation; if (LOGGER instanceof ch.qos.logback.classic.Logger) { final ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) LOGGER; final Appender<ILoggingEvent> appender = logbackLogger.getAppender("UPLOAD_REPORTER"); if (appender != null && appender instanceof FileAppender) { final FileAppender fileAppender = (FileAppender) appender; fileLocation = Optional.of(fileAppender.getFile()); } else { fileLocation = Optional.empty(); } } else { fileLocation = Optional.empty(); } return fileLocation; } }