1
0
mirror of https://github.com/RipMeApp/ripme.git synced 2025-08-15 18:34:09 +02:00

mainwindow, configure, log4j --> log4j2

This commit is contained in:
soloturn
2021-01-23 19:58:18 +01:00
parent 684f17af8f
commit f7bff9e849
4 changed files with 81 additions and 59 deletions

11
pom.xml
View File

@@ -59,9 +59,14 @@
<version>1.7</version> <version>1.7</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>log4j</groupId> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j-api</artifactId>
<version>1.2.17</version> <version>2.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-cli</groupId> <groupId>commons-cli</groupId>

View File

@@ -14,8 +14,9 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Observable; import java.util.Observable;
import java.util.Scanner; import java.util.Scanner;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jsoup.HttpStatusException; import org.jsoup.HttpStatusException;
import com.rarchives.ripme.App; import com.rarchives.ripme.App;
import com.rarchives.ripme.ui.RipStatusComplete; import com.rarchives.ripme.ui.RipStatusComplete;
@@ -28,7 +29,7 @@ public abstract class AbstractRipper
extends Observable extends Observable
implements RipperInterface, Runnable { implements RipperInterface, Runnable {
protected static final Logger LOGGER = Logger.getLogger(AbstractRipper.class); protected static final Logger LOGGER = LogManager.getLogger(AbstractRipper.class);
private final String URLHistoryFile = Utils.getURLHistoryFile(); private final String URLHistoryFile = Utils.getURLHistoryFile();
public static final String USER_AGENT = public static final String USER_AGENT =
@@ -177,12 +178,15 @@ public abstract class AbstractRipper
*/ */
public void setup() throws IOException { public void setup() throws IOException {
setWorkingDir(this.url); setWorkingDir(this.url);
Logger rootLogger = Logger.getRootLogger(); // we do not care if the rollingfileappender is active, just change the logfile in case
FileAppender fa = (FileAppender) rootLogger.getAppender("FILE"); // TODO this does not work - not even with
if (fa != null) { // .withFileName("${sys:logFilename}")
fa.setFile(this.workingDir + File.separator + "log.txt"); // in Utils.java, RollingFileAppender.
fa.activateOptions(); // System.setProperty("logFilename", this.workingDir + "/log.txt");
} // LOGGER.debug("Changing log file to '{}/log.txt'", this.workingDir);
// LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
// ctx.reconfigure();
// ctx.updateLoggers();
this.threadPool = new DownloadThreadPool(); this.threadPool = new DownloadThreadPool();
} }
@@ -482,13 +486,13 @@ public abstract class AbstractRipper
RipStatusMessage msg = new RipStatusMessage(STATUS.RIP_COMPLETE, rsc); RipStatusMessage msg = new RipStatusMessage(STATUS.RIP_COMPLETE, rsc);
observer.update(this, msg); observer.update(this, msg);
Logger rootLogger = Logger.getRootLogger(); // we do not care if the rollingfileappender is active, just change the logfile in case
FileAppender fa = (FileAppender) rootLogger.getAppender("FILE"); // TODO - does not work.
if (fa != null) { // System.setProperty("logFilename", "ripme.log");
LOGGER.debug("Changing log file back to 'ripme.log'"); // LOGGER.debug("Changing log file back to 'ripme.log'");
fa.setFile("ripme.log"); // LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
fa.activateOptions(); // ctx.reconfigure();
}
if (Utils.getConfigBoolean("urls_only.save", false)) { if (Utils.getConfigBoolean("urls_only.save", false)) {
String urlFile = this.workingDir + File.separator + "urls.txt"; String urlFile = this.workingDir + File.separator + "urls.txt";
try { try {

View File

@@ -49,14 +49,15 @@ import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants; import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument; import javax.swing.text.StyledDocument;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import com.rarchives.ripme.ripper.AbstractRipper; import com.rarchives.ripme.ripper.AbstractRipper;
import com.rarchives.ripme.utils.RipUtils; import com.rarchives.ripme.utils.RipUtils;
import com.rarchives.ripme.utils.Utils; import com.rarchives.ripme.utils.Utils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
import javax.swing.UnsupportedLookAndFeelException; import javax.swing.UnsupportedLookAndFeelException;
@@ -65,7 +66,7 @@ import javax.swing.UnsupportedLookAndFeelException;
*/ */
public final class MainWindow implements Runnable, RipStatusHandler { public final class MainWindow implements Runnable, RipStatusHandler {
private static final Logger LOGGER = Logger.getLogger(MainWindow.class); private static final Logger LOGGER = LogManager.getLogger(MainWindow.class);
private boolean isRipping = false; // Flag to indicate if we're ripping something private boolean isRipping = false; // Flag to indicate if we're ripping something
@@ -993,16 +994,11 @@ public final class MainWindow implements Runnable, RipStatusHandler {
newLevel = Level.ERROR; newLevel = Level.ERROR;
break; break;
} }
Logger.getRootLogger().setLevel(newLevel); LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
LOGGER.setLevel(newLevel); Configuration config = ctx.getConfiguration();
ConsoleAppender ca = (ConsoleAppender) Logger.getRootLogger().getAppender("stdout"); LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
if (ca != null) { loggerConfig.setLevel(newLevel);
ca.setThreshold(newLevel); ctx.updateLoggers(); // This causes all Loggers to refetch information from their LoggerConfig.
}
FileAppender fa = (FileAppender) Logger.getRootLogger().getAppender("FILE");
if (fa != null) {
fa.setThreshold(newLevel);
}
} }
private void setupTrayIcon() { private void setupTrayIcon() {
@@ -1382,34 +1378,34 @@ public final class MainWindow implements Runnable, RipStatusHandler {
switch (msg.getStatus()) { switch (msg.getStatus()) {
case LOADING_RESOURCE: case LOADING_RESOURCE:
case DOWNLOAD_STARTED: case DOWNLOAD_STARTED:
if (LOGGER.isEnabledFor(Level.INFO)) { if (LOGGER.isEnabled(Level.INFO)) {
appendLog("Downloading " + msg.getObject(), Color.BLACK); appendLog("Downloading " + msg.getObject(), Color.BLACK);
} }
break; break;
case DOWNLOAD_COMPLETE: case DOWNLOAD_COMPLETE:
if (LOGGER.isEnabledFor(Level.INFO)) { if (LOGGER.isEnabled(Level.INFO)) {
appendLog("Downloaded " + msg.getObject(), Color.GREEN); appendLog("Downloaded " + msg.getObject(), Color.GREEN);
} }
break; break;
case DOWNLOAD_COMPLETE_HISTORY: case DOWNLOAD_COMPLETE_HISTORY:
if (LOGGER.isEnabledFor(Level.INFO)) { if (LOGGER.isEnabled(Level.INFO)) {
appendLog("" + msg.getObject(), Color.GREEN); appendLog("" + msg.getObject(), Color.GREEN);
} }
break; break;
case DOWNLOAD_ERRORED: case DOWNLOAD_ERRORED:
if (LOGGER.isEnabledFor(Level.ERROR)) { if (LOGGER.isEnabled(Level.ERROR)) {
appendLog((String) msg.getObject(), Color.RED); appendLog((String) msg.getObject(), Color.RED);
} }
break; break;
case DOWNLOAD_WARN: case DOWNLOAD_WARN:
if (LOGGER.isEnabledFor(Level.WARN)) { if (LOGGER.isEnabled(Level.WARN)) {
appendLog((String) msg.getObject(), Color.ORANGE); appendLog((String) msg.getObject(), Color.ORANGE);
} }
break; break;
case RIP_ERRORED: case RIP_ERRORED:
if (LOGGER.isEnabledFor(Level.ERROR)) { if (LOGGER.isEnabled(Level.ERROR)) {
appendLog((String) msg.getObject(), Color.RED); appendLog((String) msg.getObject(), Color.RED);
} }
stopButton.setEnabled(false); stopButton.setEnabled(false);
@@ -1511,7 +1507,7 @@ public final class MainWindow implements Runnable, RipStatusHandler {
// Update total bytes // Update total bytes
break; break;
case NO_ALBUM_OR_USER: case NO_ALBUM_OR_USER:
if (LOGGER.isEnabledFor(Level.ERROR)) { if (LOGGER.isEnabled(Level.ERROR)) {
appendLog((String) msg.getObject(), Color.RED); appendLog((String) msg.getObject(), Color.RED);
} }
stopButton.setEnabled(false); stopButton.setEnabled(false);

View File

@@ -3,7 +3,6 @@ package com.rarchives.ripme.utils;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.net.URI; import java.net.URI;
@@ -40,9 +39,15 @@ import com.rarchives.ripme.ripper.AbstractRipper;
import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.RollingFileAppender;
import org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy;
import org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy;
import org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
/** /**
* Common utility functions used in various places throughout the project. * Common utility functions used in various places throughout the project.
@@ -54,7 +59,7 @@ public class Utils {
private static final String RIP_DIRECTORY = "rips"; private static final String RIP_DIRECTORY = "rips";
private static final String CONFIG_FILE = "rip.properties"; private static final String CONFIG_FILE = "rip.properties";
private static final String OS = System.getProperty("os.name").toLowerCase(); private static final String OS = System.getProperty("os.name").toLowerCase();
private static final Logger LOGGER = Logger.getLogger(Utils.class); private static final Logger LOGGER = LogManager.getLogger(Utils.class);
private static final int SHORTENED_PATH_LENGTH = 12; private static final int SHORTENED_PATH_LENGTH = 12;
private static PropertiesConfiguration config; private static PropertiesConfiguration config;
@@ -602,20 +607,32 @@ public class Utils {
* Configures root logger, either for FILE output or just console. * Configures root logger, either for FILE output or just console.
*/ */
public static void configureLogger() { public static void configureLogger() {
LogManager.shutdown(); LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
String logFile = getConfigBoolean("log.save", false) ? "log4j.file.properties" : "log4j.properties"; Configuration config = ctx.getConfiguration();
try (InputStream stream = Utils.class.getClassLoader().getResourceAsStream(logFile)) { LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
if (stream == null) {
PropertyConfigurator.configure("src/main/resources/" + logFile); // write to ripme.log file if checked in GUI
boolean logSave = getConfigBoolean("log.save", false);
if (logSave) {
LOGGER.debug("add rolling appender ripmelog");
TriggeringPolicy tp = SizeBasedTriggeringPolicy.createPolicy("20M");
DefaultRolloverStrategy rs = DefaultRolloverStrategy.newBuilder().withMax("2").build();
RollingFileAppender rolling = RollingFileAppender.newBuilder()
.setName("ripmelog")
.withFileName("ripme.log")
.withFilePattern("%d{yyyy-MM-dd HH:mm:ss} %p %m%n")
.withPolicy(tp)
.withStrategy(rs)
.build();
loggerConfig.addAppender(rolling, null, null);
} else { } else {
PropertyConfigurator.configure(stream); LOGGER.debug("remove rolling appender ripmelog");
if (config.getAppender("ripmelog") != null) {
config.getAppender("ripmelog").stop();
} }
loggerConfig.removeAppender("ripmelog");
LOGGER.info("Loaded " + logFile);
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
} }
ctx.updateLoggers(); // This causes all Loggers to refetch information from their LoggerConfig.
} }
/** /**