diff --git a/.gitignore b/.gitignore index a631951..fa03cc4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,7 @@ app/target/ telegram/target/ youtubedl/target/ - +**/.classpath +**/.factorypath +**/.project +**/.settings/ diff --git a/app/pom.xml b/app/pom.xml index 7d93375..a2b6b96 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -1,106 +1,98 @@ - - 4.0.0 + + 4.0.0 - - com.eugene_andrienko - telepodcast - 1.0-SNAPSHOT - + + com.eugene_andrienko + telepodcast + 1.0-SNAPSHOT + - com.eugene_andrienko - app - 1.0-SNAPSHOT - jar + app + 1.0-SNAPSHOT + jar - - 1.0-SNAPSHOT - + + 1.0-SNAPSHOT + - Telepodcast application - https://github.com/eugeneandrienko/telepodcast + Telepodcast application + https://github.com/eugeneandrienko/telepodcast - - - org.slf4j - slf4j-reload4j - 2.0.3 - - - ch.qos.reload4j - reload4j - 1.2.22 - - - com.beust - jcommander - 1.82 - - - com.googlecode.lanterna - lanterna - 3.1.1 - - - com.vdurmont - emoji-java - 5.1.1 - + + + com.beust + jcommander + 1.82 + + + com.googlecode.lanterna + lanterna + 3.1.1 + + + com.vdurmont + emoji-java + 5.1.1 + - - com.eugene_andrienko - telegram - 1.0-SNAPSHOT - - - com.eugene_andrienko - youtubedl - 1.0-SNAPSHOT - - + + com.eugene_andrienko + telegram + 1.0-SNAPSHOT + + + com.eugene_andrienko + youtubedl + 1.0-SNAPSHOT + + - - - - maven-jar-plugin - - - - - true - dependencies/ - true - true - com.eugene_andrienko.telepodcast.TelePodcast - - - - - - - - - + + + + maven-jar-plugin + + + + + true + dependencies/ + true + true + com.eugene_andrienko.telepodcast.TelePodcast + + + + + + + + + - - maven-shade-plugin - - - - shade - - - true - - - com.eugene_andrienko.telepodcast.TelePodcast - - - - - - - - + + maven-shade-plugin + + + + shade + + + true + + + com.eugene_andrienko.telepodcast.TelePodcast + + + + + + + + + diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/TelePodcast.java b/app/src/main/java/com/eugene_andrienko/telepodcast/TelePodcast.java index 2341cdd..1435716 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/TelePodcast.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/TelePodcast.java @@ -9,15 +9,19 @@ import com.eugene_andrienko.telegram.api.exceptions.TelegramInitException; import com.eugene_andrienko.telepodcast.cli.CLI; import com.eugene_andrienko.telepodcast.gui.GUI; +import com.eugene_andrienko.telepodcast.logging.ConsoleConfigurationFactory; +import com.eugene_andrienko.telepodcast.logging.ConsoleDebugConfigurationFactory; +import com.eugene_andrienko.telepodcast.logging.DebugConfigurationFactory; +import com.eugene_andrienko.telepodcast.logging.NoneConfigurationFactory; import com.eugene_andrienko.telepodcast.tui.TUI; import com.eugene_andrienko.telepodcast.tui.TUIException; import java.io.IOException; import java.util.ArrayList; import java.util.List; import lombok.Cleanup; -import org.apache.log4j.PropertyConfigurator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.config.ConfigurationFactory; /** @@ -82,7 +86,7 @@ private void run(String[] args) } setupLogger(); - log = LoggerFactory.getLogger(TelePodcast.class); + log = LogManager.getLogger(TelePodcast.class); if(authorize) { @@ -157,26 +161,21 @@ private void showHelpMessageAndExit() */ private void setupLogger() { - final String CONSOLE_PROPERTIES = "/log4j-console.properties"; - final String CONSOLE_DEBUG_PROPERTIES = "/log4j-console-debug.properties"; - final String DEBUG_PROPERTIES = "/log4j-debug.properties"; - final String NOLOG_PROPERTIES = "/log4j-none.properties"; - if((launchGui || launchTui) && debug) { - PropertyConfigurator.configure(TelePodcast.class.getResource(DEBUG_PROPERTIES)); + ConfigurationFactory.setConfigurationFactory(new DebugConfigurationFactory()); } else if(launchGui || launchTui) { - PropertyConfigurator.configure(TelePodcast.class.getResource(NOLOG_PROPERTIES)); + ConfigurationFactory.setConfigurationFactory(new NoneConfigurationFactory()); } else if(debug) { - PropertyConfigurator.configure(TelePodcast.class.getResource(CONSOLE_DEBUG_PROPERTIES)); + ConfigurationFactory.setConfigurationFactory(new ConsoleDebugConfigurationFactory()); } else { - PropertyConfigurator.configure(TelePodcast.class.getResource(CONSOLE_PROPERTIES)); + ConfigurationFactory.setConfigurationFactory(new ConsoleConfigurationFactory()); } } diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/cli/CLI.java b/app/src/main/java/com/eugene_andrienko/telepodcast/cli/CLI.java index 77ee330..8d8e0a4 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/cli/CLI.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/cli/CLI.java @@ -16,13 +16,13 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; /** * CLI realization. */ -@Slf4j +@Log4j2 public class CLI implements AutoCloseable { private TelegramApi telegram; @@ -105,7 +105,8 @@ else if(contentType == ContentType.VIDEO) while(downloadState != DownloadState.COMPLETE && downloadState != DownloadState.FAIL) { downloadState = youtube.getDownloadState(url); - log.debug("Downloading {}, progress: {}", url, youtube.getDownloadProgress(url)); + log.debug("Downloading {}, progress: {}, state: {}", + url, youtube.getDownloadProgress(url), downloadState.toString()); try { Thread.sleep(100); diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/gui/GUI.java b/app/src/main/java/com/eugene_andrienko/telepodcast/gui/GUI.java index fe7ea37..e58a7ff 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/gui/GUI.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/gui/GUI.java @@ -1,16 +1,14 @@ package com.eugene_andrienko.telepodcast.gui; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.log4j.Log4j2; +@Log4j2 public class GUI { - private final Logger logger = LoggerFactory.getLogger(GUI.class); - public GUI() { - logger.error("Not implemented yet!"); + log.error("Not implemented yet!"); throw new UnsupportedOperationException("Not implemented yet!"); } } diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/GarbageTextRemover.java b/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/GarbageTextRemover.java index 62e9516..b32985d 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/GarbageTextRemover.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/GarbageTextRemover.java @@ -5,13 +5,13 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; /** * Removes garbage text from YouTube video description. */ -@Slf4j +@Log4j2 public class GarbageTextRemover { /** diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/SimpleTextHelper.java b/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/SimpleTextHelper.java index 3964ec2..f812e6f 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/SimpleTextHelper.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/helpers/SimpleTextHelper.java @@ -3,10 +3,10 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; -@Slf4j +@Log4j2 public class SimpleTextHelper { /** diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/logging/ConsoleConfigurationFactory.java b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/ConsoleConfigurationFactory.java new file mode 100644 index 0000000..500363b --- /dev/null +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/ConsoleConfigurationFactory.java @@ -0,0 +1,72 @@ +package com.eugene_andrienko.telepodcast.logging; + +import java.net.URI; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.Filter.Result; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.ConsoleAppender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.config.ConfigurationSource; +import org.apache.logging.log4j.core.config.builder.api.*; +import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration; +import org.apache.logging.log4j.core.config.plugins.Plugin; + + +/** + * {@code ConfigurationFactory} for log4j2. Prints an ordinary log to console. + */ +@Plugin(name = "ConsoleConfigurationFactory", category = ConfigurationFactory.CATEGORY) +public class ConsoleConfigurationFactory extends ConfigurationFactory +{ + @Override + protected String[] getSupportedTypes() + { + return new String[]{"*"}; + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, final String name, + final URI configLocation, final ClassLoader loader) + { + ConfigurationBuilder builder = newConfigurationBuilder(); + return createConfiguration(name, builder); + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, + final ConfigurationSource source) + { + return this.getConfiguration(null, source.toString(), null, null); + } + + static Configuration createConfiguration(final String name, + ConfigurationBuilder builder) + { + builder.setConfigurationName(name); + builder.setStatusLevel(Level.ERROR); + + LayoutComponentBuilder layout = builder.newLayout("PatternLayout"); + layout.addAttribute("pattern", "%d{ABSOLUTE} [%p] %c{1} - %m%n"); + + String filterRegex = ".*Nothing to split.*|" + + ".*Fail to split string by words*.|" + + ".*Logout completed.*|" + + ".*Logging out from Telegram.*"; + FilterComponentBuilder filter = builder.newFilter("RegexFilter", Result.DENY, + Result.ACCEPT); + filter.addAttribute("regex", filterRegex); + + AppenderComponentBuilder appender = builder.newAppender("Stdout", "CONSOLE"); + appender.addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); + appender.add(layout); + appender.add(filter); + builder.add(appender); + + RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.INFO); + rootLogger.add(builder.newAppenderRef("Stdout")); + builder.add(rootLogger); + + return builder.build(); + } +} diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/logging/ConsoleDebugConfigurationFactory.java b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/ConsoleDebugConfigurationFactory.java new file mode 100644 index 0000000..a71a3d4 --- /dev/null +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/ConsoleDebugConfigurationFactory.java @@ -0,0 +1,64 @@ +package com.eugene_andrienko.telepodcast.logging; + +import java.net.URI; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.ConsoleAppender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.config.ConfigurationSource; +import org.apache.logging.log4j.core.config.Order; +import org.apache.logging.log4j.core.config.builder.api.*; +import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration; +import org.apache.logging.log4j.core.config.plugins.Plugin; + + +/** + * {@code ConfigurationFactory} for log4j2. Prints debug log in console. + */ +@Plugin(name = "ConsoleDebugConfigurationFactory", category = ConfigurationFactory.CATEGORY) +@Order(100) +public class ConsoleDebugConfigurationFactory extends ConfigurationFactory +{ + @Override + protected String[] getSupportedTypes() + { + return new String[]{"*"}; + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, final String name, + final URI configLocation, final ClassLoader loader) + { + ConfigurationBuilder builder = newConfigurationBuilder(); + return createConfiguration(name, builder); + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, + final ConfigurationSource source) + { + return this.getConfiguration(null, source.toString(), null, null); + } + + static Configuration createConfiguration(final String name, + ConfigurationBuilder builder) + { + builder.setConfigurationName(name); + builder.setStatusLevel(Level.ERROR); + + LayoutComponentBuilder layout = builder.newLayout("PatternLayout"); + layout.addAttribute("pattern", "%d{ISO8601} [%t] [%p] %C - %m%n"); + + AppenderComponentBuilder appender = builder.newAppender("Stdout", "CONSOLE"); + appender.addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); + appender.add(layout); + builder.add(appender); + + RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.DEBUG); + rootLogger.add(builder.newAppenderRef("Stdout")); + builder.add(rootLogger); + + return builder.build(); + } +} diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/logging/DebugConfigurationFactory.java b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/DebugConfigurationFactory.java new file mode 100644 index 0000000..3c75033 --- /dev/null +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/DebugConfigurationFactory.java @@ -0,0 +1,65 @@ +package com.eugene_andrienko.telepodcast.logging; + +import java.net.URI; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.config.ConfigurationSource; +import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder; +import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder; +import org.apache.logging.log4j.core.config.builder.api.LayoutComponentBuilder; +import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder; +import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration; +import org.apache.logging.log4j.core.config.plugins.Plugin; + + +/** + * {@code ConfigurationFactory} for log4j2. Prints debug log to file {@code telepodcast.log}. + */ +@Plugin(name = "DebugConfigurationFactory", category = ConfigurationFactory.CATEGORY) +public class DebugConfigurationFactory extends ConfigurationFactory +{ + @Override + protected String[] getSupportedTypes() + { + return new String[]{"*"}; + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, final String name, + final URI configLocation, final ClassLoader loader) + { + ConfigurationBuilder builder = newConfigurationBuilder(); + return createConfiguration(name, builder); + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, + final ConfigurationSource source) + { + return this.getConfiguration(null, source.toString(), null, null); + } + + static Configuration createConfiguration(final String name, + ConfigurationBuilder builder) + { + builder.setConfigurationName(name); + builder.setStatusLevel(Level.ERROR); + + LayoutComponentBuilder layout = builder.newLayout("PatternLayout"); + layout.addAttribute("pattern", "%d{ISO8601} [%t] [%p] %C - %m%n"); + + AppenderComponentBuilder appender = builder.newAppender("File", "FILE"); + appender.addAttribute("append", false); + appender.addAttribute("fileName", "telepodcast.log"); + appender.add(layout); + builder.add(appender); + + RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.DEBUG); + rootLogger.add(builder.newAppenderRef("File")); + builder.add(rootLogger); + + return builder.build(); + } +} diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/logging/NoneConfigurationFactory.java b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/NoneConfigurationFactory.java new file mode 100644 index 0000000..57531b5 --- /dev/null +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/logging/NoneConfigurationFactory.java @@ -0,0 +1,65 @@ +package com.eugene_andrienko.telepodcast.logging; + +import java.net.URI; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.ConsoleAppender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.config.ConfigurationSource; +import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder; +import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder; +import org.apache.logging.log4j.core.config.builder.api.LayoutComponentBuilder; +import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder; +import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration; +import org.apache.logging.log4j.core.config.plugins.Plugin; + + +/** + * {@code ConfigurationFactory} for log4j2. Disable logging. + */ +@Plugin(name = "NoneConfigurationFactory", category = ConfigurationFactory.CATEGORY) +public class NoneConfigurationFactory extends ConfigurationFactory +{ + @Override + protected String[] getSupportedTypes() + { + return new String[]{"*"}; + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, final String name, + final URI configLocation, final ClassLoader loader) + { + ConfigurationBuilder builder = newConfigurationBuilder(); + return createConfiguration(name, builder); + } + + @Override + public Configuration getConfiguration(final LoggerContext loggerContext, + final ConfigurationSource source) + { + return this.getConfiguration(null, source.toString(), null, null); + } + + static Configuration createConfiguration(final String name, + ConfigurationBuilder builder) + { + builder.setConfigurationName(name); + builder.setStatusLevel(Level.ERROR); + + LayoutComponentBuilder layout = builder.newLayout("PatternLayout"); + layout.addAttribute("pattern", "%d{ISO8601} [%t] [%p] %C - %m%n"); + + AppenderComponentBuilder appender = builder.newAppender("Stdout", "CONSOLE"); + appender.addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); + appender.add(layout); + builder.add(appender); + + RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.FATAL); + rootLogger.add(builder.newAppenderRef("Stdout")); + builder.add(rootLogger); + + return builder.build(); + } +} diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/AbstractWindow.java b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/AbstractWindow.java index bb70046..5604e82 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/AbstractWindow.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/AbstractWindow.java @@ -6,8 +6,11 @@ import com.googlecode.lanterna.gui2.MultiWindowTextGUI; import com.googlecode.lanterna.gui2.Window; import java.io.IOException; -import java.util.*; -import org.slf4j.Logger; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import org.apache.logging.log4j.Logger; public class AbstractWindow diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/DownloadWindow.java b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/DownloadWindow.java index 31fdd6e..e7d5bb6 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/DownloadWindow.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/DownloadWindow.java @@ -32,10 +32,10 @@ import java.util.concurrent.atomic.AtomicInteger; import lombok.Cleanup; import lombok.NonNull; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; -@Slf4j +@Log4j2 public class DownloadWindow extends AbstractWindow { private final MultiWindowTextGUI tui; diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/EnterLinksWindow.java b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/EnterLinksWindow.java index 59ca75c..cd577ab 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/EnterLinksWindow.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/EnterLinksWindow.java @@ -8,11 +8,11 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import static com.eugene_andrienko.telepodcast.helpers.SimpleTextHelper.removeInvalidUrls; -@Slf4j +@Log4j2 public class EnterLinksWindow { private final MultiWindowTextGUI tui; diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/LoadingTitlesWindow.java b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/LoadingTitlesWindow.java index bf36ccb..033ffef 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/LoadingTitlesWindow.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/LoadingTitlesWindow.java @@ -13,10 +13,10 @@ import java.util.Map; import java.util.Set; import lombok.Cleanup; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; -@Slf4j +@Log4j2 public class LoadingTitlesWindow extends AbstractWindow { private final MultiWindowTextGUI tui; diff --git a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/SelectDownloadsWindow.java b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/SelectDownloadsWindow.java index 8d6372a..df65aa3 100644 --- a/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/SelectDownloadsWindow.java +++ b/app/src/main/java/com/eugene_andrienko/telepodcast/tui/windows/SelectDownloadsWindow.java @@ -9,10 +9,10 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; -@Slf4j +@Log4j2 public class SelectDownloadsWindow extends AbstractWindow { private final MultiWindowTextGUI tui; diff --git a/app/src/main/java/module-info.java b/app/src/main/java/module-info.java index 20b9cc8..24b13c6 100644 --- a/app/src/main/java/module-info.java +++ b/app/src/main/java/module-info.java @@ -1,6 +1,6 @@ module telepodcast.app { - requires org.slf4j; - requires reload4j; + requires org.apache.logging.log4j; + requires org.apache.logging.log4j.core; requires jcommander; requires com.googlecode.lanterna; requires emoji.java; diff --git a/app/src/main/resources/log4j-console-debug.properties b/app/src/main/resources/log4j-console-debug.properties deleted file mode 100644 index ab92d86..0000000 --- a/app/src/main/resources/log4j-console-debug.properties +++ /dev/null @@ -1,5 +0,0 @@ -log4j.rootLogger = DEBUG, CONSOLE -log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender - -log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout -log4j.appender.CONSOLE.layout.conversionPattern = %d{ISO8601} [%t] [%p] %C - %m%n diff --git a/app/src/main/resources/log4j-console.properties b/app/src/main/resources/log4j-console.properties deleted file mode 100644 index dde4adc..0000000 --- a/app/src/main/resources/log4j-console.properties +++ /dev/null @@ -1,21 +0,0 @@ -log4j.rootLogger = INFO, CONSOLE -log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender - -log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout -log4j.appender.CONSOLE.layout.conversionPattern = %d{ABSOLUTE} [%p] %c{1} - %m%n - -log4j.appender.CONSOLE.filter.1 = org.apache.log4j.varia.StringMatchFilter -log4j.appender.CONSOLE.filter.1.StringToMatch = Nothing to split -log4j.appender.CONSOLE.filter.1.AcceptOnMatch = false - -log4j.appender.CONSOLE.filter.2 = org.apache.log4j.varia.StringMatchFilter -log4j.appender.CONSOLE.filter.2.StringToMatch = Fail to split string by words -log4j.appender.CONSOLE.filter.2.AcceptOnMatch = false - -log4j.appender.CONSOLE.filter.3 = org.apache.log4j.varia.StringMatchFilter -log4j.appender.CONSOLE.filter.3.StringToMatch = Logout completed -log4j.appender.CONSOLE.filter.3.AcceptOnMatch = false - -log4j.appender.CONSOLE.filter.4 = org.apache.log4j.varia.StringMatchFilter -log4j.appender.CONSOLE.filter.4.StringToMatch = Logging out from Telegram -log4j.appender.CONSOLE.filter.4.AcceptOnMatch = false diff --git a/app/src/main/resources/log4j-debug.properties b/app/src/main/resources/log4j-debug.properties deleted file mode 100644 index 08d4d69..0000000 --- a/app/src/main/resources/log4j-debug.properties +++ /dev/null @@ -1,8 +0,0 @@ -log4j.rootLogger = DEBUG, FILE -log4j.appender.FILE = org.apache.log4j.FileAppender - -log4j.appender.FILE.append = false -log4j.appender.FILE.File = telepodcast.log - -log4j.appender.FILE.layout = org.apache.log4j.PatternLayout -log4j.appender.FILE.layout.conversionPattern = %d{ISO8601} [%t] [%p] %C - %m%n diff --git a/app/src/main/resources/log4j-none.properties b/app/src/main/resources/log4j-none.properties deleted file mode 100644 index f25eae9..0000000 --- a/app/src/main/resources/log4j-none.properties +++ /dev/null @@ -1,4 +0,0 @@ -log4j.rootLogger = FATAL, NONE -log4j.appender.NONE = org.apache.log4j.ConsoleAppender -log4j.appender.NONE.layout = org.apache.log4j.PatternLayout -log4j.appender.NONE.layout.conversionPattern = %d{ISO8601} [%t] [%p] %C - %m%n diff --git a/pom.xml b/pom.xml index a619fc7..62cb88e 100644 --- a/pom.xml +++ b/pom.xml @@ -1,125 +1,141 @@ - - 4.0.0 + 4.0.0 - com.eugene_andrienko - telepodcast - 1.0-SNAPSHOT - pom + com.eugene_andrienko + telepodcast + 1.0-SNAPSHOT + pom - Telepodcast - https://github.com/eugeneandrienko/telepodcast + Telepodcast + https://github.com/eugeneandrienko/telepodcast - - UTF-8 - 17 - 17 - 5.9.1 - 1.18.24 - + + UTF-8 + 17 + 17 + 5.9.1 + 1.18.24 + - - - org.junit - junit-bom - ${junit.version} - pom - test - - - org.junit.jupiter - junit-jupiter - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-params - ${junit.version} - test - - - org.mockito - mockito-core - 4.8.1 - test - - - org.slf4j - slf4j-api - 2.0.3 - - - org.projectlombok - lombok - ${lombok.version} - provided - - + + + + org.apache.logging.log4j + log4j-bom + 2.19.0 + import + pom + + + - - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.1 - - - - org.projectlombok - lombok - ${lombok.version} - - - - - - maven-surefire-plugin - 3.0.0-M6 - - - maven-jar-plugin - 3.2.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - maven-shade-plugin - 3.3.0 - - - - + + + org.junit + junit-bom + ${junit.version} + pom + test + + + org.junit.jupiter + junit-jupiter + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit.version} + test + + + org.mockito + mockito-core + 4.8.1 + test + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.projectlombok + lombok + ${lombok.version} + provided + + - - youtubedl - telegram - app - + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.1 + + + + org.projectlombok + lombok + ${lombok.version} + + + + + + maven-surefire-plugin + 3.0.0-M6 + + + maven-jar-plugin + 3.2.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + maven-shade-plugin + 3.3.0 + + + + + + + youtubedl + telegram + app + diff --git a/telegram/src/main/java/com/eugene_andrienko/telegram/api/TelegramApi.java b/telegram/src/main/java/com/eugene_andrienko/telegram/api/TelegramApi.java index 5d95d71..d71dc19 100644 --- a/telegram/src/main/java/com/eugene_andrienko/telegram/api/TelegramApi.java +++ b/telegram/src/main/java/com/eugene_andrienko/telegram/api/TelegramApi.java @@ -9,14 +9,14 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.tuple.ImmutablePair; /** * Synchronous API for Telegram. Based on the TDLib. */ -@Slf4j +@Log4j2 public class TelegramApi implements AutoCloseable { private final Telegram telegram; @@ -30,7 +30,7 @@ public class TelegramApi implements AutoCloseable * * @param options Initialized {@code TelegramOptions} object. * - * @throws TelegramInitException Failed to initialize API. + * @throws TelegramInitException Fail initialize API. */ public TelegramApi(TelegramOptions options) throws TelegramInitException { diff --git a/telegram/src/main/java/com/eugene_andrienko/telegram/impl/Telegram.java b/telegram/src/main/java/com/eugene_andrienko/telegram/impl/Telegram.java index d3c555f..f964214 100644 --- a/telegram/src/main/java/com/eugene_andrienko/telegram/impl/Telegram.java +++ b/telegram/src/main/java/com/eugene_andrienko/telegram/impl/Telegram.java @@ -9,7 +9,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicLong; import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -17,7 +17,7 @@ * Sends files and messages to "Saved messages" chat in Telegram. * Also hides complexity of TDLib inside itself. */ -@Slf4j +@Log4j2 public class Telegram implements AutoCloseable { private final TelegramTDLibConnector telegramConnector; diff --git a/telegram/src/main/java/com/eugene_andrienko/telegram/impl/TelegramTDLibConnector.java b/telegram/src/main/java/com/eugene_andrienko/telegram/impl/TelegramTDLibConnector.java index 44dd45b..360804f 100644 --- a/telegram/src/main/java/com/eugene_andrienko/telegram/impl/TelegramTDLibConnector.java +++ b/telegram/src/main/java/com/eugene_andrienko/telegram/impl/TelegramTDLibConnector.java @@ -25,7 +25,7 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import lombok.Cleanup; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.tuple.ImmutablePair; import org.drinkless.tdlib.Client; import org.drinkless.tdlib.TdApi; @@ -35,7 +35,7 @@ * Example class for TDLib usage from Java. */ @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter") -@Slf4j +@Log4j2 public class TelegramTDLibConnector implements AutoCloseable { private final int apiId; diff --git a/telegram/src/main/java/module-info.java b/telegram/src/main/java/module-info.java index d728256..fc36b50 100644 --- a/telegram/src/main/java/module-info.java +++ b/telegram/src/main/java/module-info.java @@ -1,7 +1,8 @@ module telepodcast.telegram { exports com.eugene_andrienko.telegram.api; exports com.eugene_andrienko.telegram.api.exceptions; - requires org.slf4j; + requires org.apache.logging.log4j; + requires org.apache.logging.log4j.core; requires lombok; requires org.apache.commons.lang3; } diff --git a/youtubedl/pom.xml b/youtubedl/pom.xml index f4000dd..07d9392 100644 --- a/youtubedl/pom.xml +++ b/youtubedl/pom.xml @@ -1,19 +1,19 @@ - - 4.0.0 + 4.0.0 - - com.eugene_andrienko - telepodcast - 1.0-SNAPSHOT - + + com.eugene_andrienko + telepodcast + 1.0-SNAPSHOT + - com.eugene_andrienko - youtubedl - 1.0-SNAPSHOT - jar + youtubedl + 1.0-SNAPSHOT + jar - YouTubeDL - https://github.com/eugeneandrienko/telepodcast + YouTubeDL + https://github.com/eugeneandrienko/telepodcast diff --git a/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/api/YouTubeDlApi.java b/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/api/YouTubeDlApi.java index dd5b45a..24a676e 100644 --- a/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/api/YouTubeDlApi.java +++ b/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/api/YouTubeDlApi.java @@ -11,7 +11,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NonNull; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; // TODO: download comment with timecodes (if no in video description). @@ -21,7 +21,7 @@ * * Library downloads data from YouTube asynchronously. */ -@Slf4j +@Log4j2 public class YouTubeDlApi implements AutoCloseable { private final IYoutubeDl youtubeDl; diff --git a/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/AbstractYoutubeDl.java b/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/AbstractYoutubeDl.java index e44123c..515ae90 100644 --- a/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/AbstractYoutubeDl.java +++ b/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/AbstractYoutubeDl.java @@ -9,10 +9,10 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; -@Slf4j +@Log4j2 public abstract class AbstractYoutubeDl implements AutoCloseable, IYoutubeDl { File tempDirectory; diff --git a/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/YtDlp.java b/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/YtDlp.java index 1b312c1..024f811 100644 --- a/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/YtDlp.java +++ b/youtubedl/src/main/java/com/eugene_andrienko/youtubedl/impl/YtDlp.java @@ -9,11 +9,11 @@ import java.util.concurrent.ExecutorService; import java.util.regex.Matcher; import java.util.regex.Pattern; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; // TODO: recoding audio takes too much CPU power on my laptop -@Slf4j +@Log4j2 public final class YtDlp extends AbstractYoutubeDl { private static final String YT_DLP = "yt-dlp"; diff --git a/youtubedl/src/main/java/module-info.java b/youtubedl/src/main/java/module-info.java index 08cec1f..da66519 100644 --- a/youtubedl/src/main/java/module-info.java +++ b/youtubedl/src/main/java/module-info.java @@ -1,6 +1,7 @@ module telepodcast.youtubedl { exports com.eugene_andrienko.youtubedl.api; exports com.eugene_andrienko.youtubedl.api.exceptions; - requires org.slf4j; + requires org.apache.logging.log4j; + requires org.apache.logging.log4j.core; requires lombok; }