From 189d8096db58744b81751fc94d799f4f4e6b3259 Mon Sep 17 00:00:00 2001 From: P0nk Date: Mon, 3 Jan 2022 18:01:24 +0100 Subject: [PATCH] Refactor trade logging --- src/main/java/server/Trade.java | 33 ++++++++++++++++++++++++++++-- src/main/java/tools/LogHelper.java | 22 -------------------- src/main/resources/log4j2.xml | 11 +++++++++- 3 files changed, 41 insertions(+), 25 deletions(-) diff --git a/src/main/java/server/Trade.java b/src/main/java/server/Trade.java index c5d3a227dd..aaaa9582ee 100644 --- a/src/main/java/server/Trade.java +++ b/src/main/java/server/Trade.java @@ -33,13 +33,15 @@ import net.server.coordinator.world.InviteCoordinator; import net.server.coordinator.world.InviteCoordinator.InviteResult; import net.server.coordinator.world.InviteCoordinator.InviteResultType; import net.server.coordinator.world.InviteCoordinator.InviteType; -import tools.LogHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import tools.PacketCreator; import tools.Pair; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.StringJoiner; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -47,6 +49,7 @@ import java.util.concurrent.atomic.AtomicBoolean; * @author Ronan - concurrency safety + check available slots + trade results */ public class Trade { + private static final Logger log = LoggerFactory.getLogger(Trade.class); public enum TradeResult { NO_RESPONSE(1), @@ -348,7 +351,7 @@ public class Trade { } } - LogHelper.logTrade(local, partner); + logTrade(local, partner); local.completeTrade(); partner.completeTrade(); @@ -521,4 +524,30 @@ public class Trade { public void setFullTrade(boolean fullTrade) { this.fullTrade = fullTrade; } + + private static void logTrade(Trade trade1, Trade trade2) { + String name1 = trade1.getChr().getName(); + String name2 = trade2.getChr().getName(); + StringBuilder message = new StringBuilder(); + message.append(String.format("Committing trade between %s and %s%n", name1, name2)); + //Trade 1 to trade 2 + message.append(String.format("Trading %s -> %s: %d mesos, items: %s%n", name1, name2, + trade1.getExchangeMesos(), getFormattedItemLogMessage(trade1.getItems()))); + + //Trade 2 to trade 1 + message.append(String.format("Trading %s -> %s: %d mesos, items: %s%n", name2, name1, + trade2.getExchangeMesos(), getFormattedItemLogMessage(trade2.getItems()))); + + log.info(message.toString()); + } + + private static String getFormattedItemLogMessage(List items) { + StringJoiner sj = new StringJoiner(", ", "[", "]"); + ItemInformationProvider ii = ItemInformationProvider.getInstance(); + for (Item item : items) { + String itemName = ii.getName(item.getItemId()); + sj.add(String.format("%dx %s (%d)", item.getQuantity(), itemName, item.getItemId())); + } + return sj.toString(); + } } \ No newline at end of file diff --git a/src/main/java/tools/LogHelper.java b/src/main/java/tools/LogHelper.java index 0d4a04c0c7..fd9ccc79f1 100644 --- a/src/main/java/tools/LogHelper.java +++ b/src/main/java/tools/LogHelper.java @@ -2,10 +2,8 @@ package tools; import client.Character; import client.Client; -import client.inventory.Item; import net.server.Server; import server.ItemInformationProvider; -import server.Trade; import server.expeditions.Expedition; import java.text.SimpleDateFormat; @@ -17,26 +15,6 @@ import static java.util.concurrent.TimeUnit.SECONDS; public class LogHelper { - public static void logTrade(Trade trade1, Trade trade2) { - String name1 = trade1.getChr().getName(); - String name2 = trade2.getChr().getName(); - String log = "TRADE BETWEEN " + name1 + " AND " + name2 + "\r\n"; - //Trade 1 to trade 2 - log += trade1.getExchangeMesos() + " mesos from " + name1 + " to " + name2 + " \r\n"; - for (Item item : trade1.getItems()) { - String itemName = ItemInformationProvider.getInstance().getName(item.getItemId()) + "(" + item.getItemId() + ")"; - log += item.getQuantity() + " " + itemName + " from " + name1 + " to " + name2 + " \r\n"; - } - //Trade 2 to trade 1 - log += trade2.getExchangeMesos() + " mesos from " + name2 + " to " + name1 + " \r\n"; - for (Item item : trade2.getItems()) { - String itemName = ItemInformationProvider.getInstance().getName(item.getItemId()) + "(" + item.getItemId() + ")"; - log += item.getQuantity() + " " + itemName + " from " + name2 + " to " + name1 + " \r\n"; - } - log += "\r\n\r\n"; - FilePrinter.print(FilePrinter.LOG_TRADE, log); - } - public static void logExpedition(Expedition expedition) { Server.getInstance().broadcastGMMessage(expedition.getLeader().getWorld(), PacketCreator.serverNotice(6, expedition.getType().toString() + " Expedition with leader " + expedition.getLeader().getName() + " finished after " + getTimeString(expedition.getStartTime()))); diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index d9120f9450..fd614590c3 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -36,6 +36,12 @@ ${standard-pattern} + + + + ${standard-pattern} + + @@ -43,14 +49,17 @@ + - + + +