Anpassung Logger
This commit is contained in:
@ -5,7 +5,7 @@ plugins {
|
||||
|
||||
application.mainClass = "de.ocame.ffdiscordbot.Main"
|
||||
group 'de.ocame'
|
||||
version '1.2-SNAPSHOT'
|
||||
version '1.3-SNAPSHOT'
|
||||
|
||||
|
||||
repositories {
|
||||
|
||||
@ -12,9 +12,10 @@ public class ConfigLoader {
|
||||
try (FileInputStream input = new FileInputStream("ffBot.conf")) {
|
||||
properties.load(input);
|
||||
} catch (IOException e) {
|
||||
System.err.println("Konfigurationsdatei konnte nicht geladen werden: " + e.getMessage());
|
||||
LoggerUtil.log("info", "ConfigLoader", "Konfigurationsdatei konnte nicht geladen werden: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
LoggerUtil.log("info", "ConfigLoader", "Konfigurationsdatei wurde geladen");
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
|
||||
@ -47,10 +47,12 @@ public class FanFiktionReader {
|
||||
public void checkAlerts() {
|
||||
|
||||
try {
|
||||
|
||||
LoggerUtil.log("info", "Reader", "Beginn Check Alerts");
|
||||
Document alertPage = fetchHTMLWithAuthentication(URL + "/?a=i");
|
||||
if (alertPage == null)
|
||||
if (alertPage == null) {
|
||||
LoggerUtil.log("info", "Reader", "Keine Seite gefunden");
|
||||
return;
|
||||
}
|
||||
|
||||
// Story Check
|
||||
Element authorBox = alertPage.getElementById("ffcbox-alerts_author-box");
|
||||
@ -59,6 +61,8 @@ public class FanFiktionReader {
|
||||
for (Element row : rows) {
|
||||
checkNewStoryFromAlert(row);
|
||||
}
|
||||
if(rows.isEmpty())
|
||||
LoggerUtil.log("info", "Reader", "Keine neuen Storys");
|
||||
}
|
||||
|
||||
// Kapitel Check
|
||||
@ -89,6 +93,9 @@ public class FanFiktionReader {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if(rows.isEmpty())
|
||||
LoggerUtil.log("info", "Reader", "Keine neuen Kapitel");
|
||||
}
|
||||
|
||||
} catch (IOException | InterruptedException e) {
|
||||
@ -96,6 +103,7 @@ public class FanFiktionReader {
|
||||
}
|
||||
Random random = new Random();
|
||||
this.time = random.nextLong(24 * 60, 34 * 60);
|
||||
LoggerUtil.log("info", "Reader", "Ende Check Alerts");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -104,6 +112,7 @@ public class FanFiktionReader {
|
||||
* @param row
|
||||
*/
|
||||
public void checkNewStoryFromAlert(Element row) {
|
||||
LoggerUtil.log("info", "Reader", "Check neue Storys");
|
||||
Elements cols = row.select("td");
|
||||
if (cols.size() >= 2) { // Ensure there are at least two columns
|
||||
/*name, link, ffid, date, autor*/
|
||||
@ -142,8 +151,12 @@ public class FanFiktionReader {
|
||||
* @param chapterDate
|
||||
*/
|
||||
public void checkNewChapter(String url, long chapterDate) {
|
||||
try {
|
||||
checkNewChapter(url, chapterDate, false);
|
||||
}
|
||||
|
||||
public void checkNewChapter(String url, long chapterDate, boolean force) {
|
||||
try {
|
||||
LoggerUtil.log("info", "Reader", "Check neue Kapitel");
|
||||
Document storyPage = fetchHTMLWithAuthentication(url);
|
||||
if (storyPage == null)
|
||||
return;
|
||||
@ -172,13 +185,14 @@ public class FanFiktionReader {
|
||||
// todo: fehler behandlung
|
||||
}
|
||||
|
||||
if (!SQLiteStorage.checkChapter(ffid, Long.parseLong(chapterNumer))) {
|
||||
if (!SQLiteStorage.checkChapter(ffid, Long.parseLong(chapterNumer)) || force) {
|
||||
/* todo: neue Chapter gefunden Ausgabe */
|
||||
if (SQLiteStorage.isStoryInvalid(ffid)) {
|
||||
readandSaveStory(storyPage);
|
||||
}
|
||||
DataStory ds = SQLiteStorage.getStory(ffid);
|
||||
DataChapter newChapter = new DataChapter(chapterName, URL + onChange, ffid, chapterDate, Long.parseLong(chapterNumer));
|
||||
if(!SQLiteStorage.checkChapter(ffid, Long.parseLong(chapterNumer)))
|
||||
SQLiteStorage.insertChapter(newChapter);
|
||||
//clearChapter();
|
||||
new ChapterNotifier(jda, newChapter, ds).sendOutput();
|
||||
@ -275,7 +289,7 @@ public class FanFiktionReader {
|
||||
* Führt den Login aus
|
||||
*/
|
||||
public void login() {
|
||||
System.out.print("Login muss ausgeführt werden");
|
||||
LoggerUtil.log("info", "Reader", "Login muss ausgeführt werden");
|
||||
try {
|
||||
ConfigLoader configLoader = new ConfigLoader();
|
||||
|
||||
@ -288,6 +302,7 @@ public class FanFiktionReader {
|
||||
if (nameBox.isEmpty()) {
|
||||
time += 2 * 60 * 60; // Zeit um 2h erhöhen
|
||||
new InfoNotifier(jda).setMessagetext("Login Fehlgeschlagen").sendOutput();
|
||||
LoggerUtil.log("info", "Reader", "Login Fehlgeschlagen");
|
||||
}
|
||||
|
||||
Elements aBox = logintPage.select("input[name='a']");
|
||||
@ -311,9 +326,11 @@ public class FanFiktionReader {
|
||||
if (!nameBox.isEmpty()) {
|
||||
time += 2 * 60 * 60; // Zeit um 2h erhöhen
|
||||
new InfoNotifier(jda).setMessagetext("Login Fehlgeschlagen").sendOutput();
|
||||
LoggerUtil.log("info", "Reader", "Login Fehlgeschlagen");
|
||||
}
|
||||
|
||||
} catch (IOException | InterruptedException e) {
|
||||
LoggerUtil.log("error", "Reader", "Login nicht erfolgreich " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@ -353,7 +370,7 @@ public class FanFiktionReader {
|
||||
try {
|
||||
Document sendToFav = fetcher.fetchHtml(URL + "/?a=q&a1=v&t=addstory&lbi=popup-addtofav-body&ar=1&action=i", postData);
|
||||
if(sendToFav.getElementsByClass("successbox").isEmpty()) {
|
||||
System.out.print("Story konnte nicht hinzugefügt werden");
|
||||
LoggerUtil.log("info", "Reader", "Story konnte nicht hinzugefügt werden");
|
||||
new InfoNotifier(jda).setMessagetext("Story " + ffid + "konnte nicht hinzugefügt werden. \n" + sendToFav.toString()).sendOutput();
|
||||
}
|
||||
}
|
||||
|
||||
39
src/main/java/de/ocame/ffdiscordbot/LoggerUtil.java
Normal file
39
src/main/java/de/ocame/ffdiscordbot/LoggerUtil.java
Normal file
@ -0,0 +1,39 @@
|
||||
package de.ocame.ffdiscordbot;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class LoggerUtil {
|
||||
//private static final Logger logger = LoggerFactory.getLogger(LoggerUtil.class);
|
||||
|
||||
/**
|
||||
* Erstellt einen Logeintrag basierend auf Typ, Modul und Nachricht.
|
||||
*
|
||||
* @param logType Der Typ des Logs: "trace", "debug", "info", "warn", "error".
|
||||
* @param module Der Name des Moduls oder Kontextes.
|
||||
* @param message Die Nachricht, die geloggt werden soll.
|
||||
*/
|
||||
public static void log(String logType, String module, String message) {
|
||||
Logger logger = LoggerFactory.getLogger(module);
|
||||
switch (logType.toLowerCase()) {
|
||||
case "trace":
|
||||
logger.trace(message);
|
||||
break;
|
||||
case "debug":
|
||||
logger.debug(message);
|
||||
break;
|
||||
case "info":
|
||||
logger.info(message);
|
||||
break;
|
||||
case "warn":
|
||||
logger.warn(message);
|
||||
break;
|
||||
case "error":
|
||||
logger.error(message);
|
||||
break;
|
||||
default:
|
||||
logger.warn("Unbekannter Log-Typ: {}. Nachricht: {}", logType, message);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -53,6 +53,9 @@ public class Main {
|
||||
// Berechne das neue Intervall basierend auf ffr.getTime()
|
||||
delay[0] = ffr.getTime();
|
||||
|
||||
|
||||
LoggerUtil.log("info", "Main", "neue Zeit: " + Long.toString(delay[0]));
|
||||
|
||||
// Plane die Aufgabe erneut mit dem neuen Intervall
|
||||
scheduledFuture.get().cancel(false);
|
||||
scheduledFuture.set(scheduler.schedule(this, delay[0], TimeUnit.SECONDS));
|
||||
|
||||
@ -3,6 +3,8 @@ import java.awt.*;
|
||||
import java.sql.*;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -293,13 +295,13 @@ public class SQLiteStorage {
|
||||
String channelOption = rs.getString("value");
|
||||
if (!channelOption.isEmpty()) {
|
||||
|
||||
JSONArray jsonArray = new JSONArray(channelOption);
|
||||
JSONObject jsonObject = new JSONObject(channelOption);
|
||||
List<Long> longList = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
for (String key : jsonObject.keySet()) {
|
||||
try {
|
||||
// Versuche, den Wert in ein Long zu konvertieren
|
||||
long value = jsonArray.getLong(i);
|
||||
long value = jsonObject.getLong(key);
|
||||
longList.add(value); // Füge den Wert der Liste hinzu, wenn es ein gültiger Long ist
|
||||
} catch (Exception e) {
|
||||
// Wenn der Wert kein gültiges Long ist, wird er übersprungen
|
||||
|
||||
@ -25,7 +25,7 @@ class SocketServerRunnable implements Runnable {
|
||||
public void run() {
|
||||
int port = 12345;
|
||||
try (ServerSocket serverSocket = new ServerSocket(port)) {
|
||||
System.out.println("Socket-Server läuft auf Port " + port);
|
||||
LoggerUtil.log("info", "SocketRunnable", "Socket-Server läuft auf Port " + port);
|
||||
|
||||
while (true) {
|
||||
try (Socket clientSocket = serverSocket.accept();
|
||||
@ -33,7 +33,8 @@ class SocketServerRunnable implements Runnable {
|
||||
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
|
||||
|
||||
String jsonMessageFromClient = in.readLine();
|
||||
System.out.println("Nachricht vom Client erhalten: " + jsonMessageFromClient);
|
||||
LoggerUtil.log("info", "SocketRunnable", "Nachricht vom Client erhalten: " + jsonMessageFromClient);
|
||||
|
||||
JSONObject jsonData = new JSONObject(jsonMessageFromClient);
|
||||
String action = jsonData.getString("action");
|
||||
|
||||
@ -45,17 +46,19 @@ class SocketServerRunnable implements Runnable {
|
||||
case "check" -> checkAction(out);
|
||||
case "chapterTest" -> chapterTest(jsonData, out);
|
||||
case "addFavo" -> addFavo(jsonData);
|
||||
case "forceChapter" -> forceChapter(jsonData);
|
||||
}
|
||||
|
||||
}
|
||||
catch (IOException | NullPointerException e) {
|
||||
System.out.println("Fehler bei der Kommunikation mit dem Client: " + e.getMessage());
|
||||
LoggerUtil.log("error", "SocketRunnable", "Fehler bei der Kommunikation mit dem Client: " + e.getMessage());
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
System.out.println("Server konnte nicht gestartet werden: " + e.getMessage());
|
||||
LoggerUtil.log("error", "SocketRunnable", "Server konnte nicht gestartet werden: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
private Boolean channelCheckAction(JSONObject jsonData, PrintWriter out) {
|
||||
@ -118,4 +121,11 @@ class SocketServerRunnable implements Runnable {
|
||||
String ffId = jsonData.getString("ffId");
|
||||
ffr.addStoryToFavorit(ffId);
|
||||
}
|
||||
private void forceChapter(JSONObject jsonData) {
|
||||
String link = jsonData.getString("link");
|
||||
String timestamp = jsonData.getString("timestamp");
|
||||
|
||||
ffr.checkNewChapter(link, ffr.DateToTimestamp(timestamp), true);
|
||||
|
||||
}
|
||||
}
|
||||
12
src/main/resources/logback.xml
Normal file
12
src/main/resources/logback.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} %boldCyan(%-34.-34thread) %red(%10.10X{jda.shard}) %boldGreen(%-15.-15logger{0}) %highlight(%-6level) %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<root level="info">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</root>
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user