diff --git a/android/assets/log4j2.xml b/android/assets/log4j2.xml deleted file mode 100644 index 542d1194..00000000 --- a/android/assets/log4j2.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0779d35b..a4b64a7f 100644 --- a/build.gradle +++ b/build.gradle @@ -243,11 +243,6 @@ project(":core") { compile group: 'io.netty', name: 'netty-all', version: nettyVersion } - dependencies { - compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.3' - compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.3' - } - dependencies { testCompile 'junit:junit:4.12' testCompile "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion" diff --git a/core/src/com/riiablo/Client.java b/core/src/com/riiablo/Client.java index c8439397..6b37fc07 100644 --- a/core/src/com/riiablo/Client.java +++ b/core/src/com/riiablo/Client.java @@ -59,7 +59,10 @@ import com.riiablo.loader.DC6Loader; import com.riiablo.loader.DCCLoader; import com.riiablo.loader.IndexLoader; import com.riiablo.loader.PaletteLoader; -import com.riiablo.log.LogManager; +import com.riiablo.logger.Level; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.LoggerRegistry; +import com.riiablo.logger.OutputStreamAppender; import com.riiablo.map.DS1; import com.riiablo.map.DS1Loader; import com.riiablo.map.DT1; @@ -113,7 +116,7 @@ public class Client extends Game { private CharData charData; private D2 anim; private Metrics metrics; - private LogManager logs; + private LoggerRegistry logs; private boolean forceWindowed; private boolean forceDrawFps; @@ -216,9 +219,14 @@ public class Client extends Game { @Override public void create() { Riiablo.client = this; - Riiablo.logs = logs = LogManager.INSTANCE; Gdx.app.setLogLevel(Application.LOG_DEBUG); + Riiablo.logs = logs = LogManager.getRegistry(); + logs.getRoot().level(Level.DEBUG); + logs.setLevel("com.riiablo.save", Level.DEBUG); + logs.setLevel("com.riiablo.item", Level.DEBUG); + logs.setLevel("com.riiablo.engine", Level.TRACE); + // This is needed so that home is in a platform-dependent handle Riiablo.home = home = Gdx.files.absolute(home.path()); @@ -231,6 +239,7 @@ public class Client extends Game { try { System.setOut(console.out); System.setErr(console.out); + logs.getRoot().addAppender(new OutputStreamAppender(System.out)); } catch (SecurityException e) { console.out.println("stdout could not be redirected to console: " + e.getMessage()); throw new GdxRuntimeException("Unable to bind console out.", e); diff --git a/core/src/com/riiablo/Commands.java b/core/src/com/riiablo/Commands.java index e396fe76..93d449cd 100644 --- a/core/src/com/riiablo/Commands.java +++ b/core/src/com/riiablo/Commands.java @@ -5,10 +5,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Set; import org.apache.commons.lang3.math.NumberUtils; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.core.config.Configurator; -import org.apache.logging.log4j.spi.LoggerContext; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; @@ -28,6 +24,8 @@ import com.riiablo.command.ParameterException; import com.riiablo.console.Console; import com.riiablo.cvar.Cvar; import com.riiablo.key.MappedKey; +import com.riiablo.logger.Level; +import com.riiablo.logger.LogManager; import com.riiablo.screen.SelectCharacterScreen3; import com.riiablo.serializer.SerializeException; import com.riiablo.serializer.StringSerializer; @@ -292,12 +290,11 @@ public class Commands { @Override public void onExecuted(Command.Instance instance) { String name = instance.getArg(0); - LoggerContext context = LogManager.getContext(false); Level level; if (name.equalsIgnoreCase("root")) { - level = context.getLogger(LogManager.ROOT_LOGGER_NAME).getLevel(); + level = Riiablo.logs.getLevel(LogManager.ROOT); } else { - level = context.getLogger(name).getLevel(); + level = Riiablo.logs.getLevel(name); } Riiablo.console.out.println(level); } @@ -314,12 +311,12 @@ public class Commands { @Override public void onExecuted(Command.Instance instance) { String name = instance.getArg(0); - Level level = Level.toLevel(instance.getArg(1), null); + Level level = Level.valueOf(instance.getArg(1), null); if (level == null) { Riiablo.console.out.println("Unknown log level: " + instance.getArg(1)); return; } - Configurator.setLevel(name, level); + Riiablo.logs.setLevel(name, level); } }) .build(); diff --git a/core/src/com/riiablo/Riiablo.java b/core/src/com/riiablo/Riiablo.java index b91052b2..fee668ff 100644 --- a/core/src/com/riiablo/Riiablo.java +++ b/core/src/com/riiablo/Riiablo.java @@ -17,7 +17,7 @@ import com.riiablo.codec.D2; import com.riiablo.codec.StringTBLs; import com.riiablo.console.RenderedConsole; import com.riiablo.graphics.PaletteIndexedBatch; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LoggerRegistry; import com.riiablo.mpq.MPQFileHandleResolver; import com.riiablo.save.CharData; import com.riiablo.screen.GameScreen; @@ -86,5 +86,5 @@ public class Riiablo { public static GameScreen game; public static D2 anim; public static Metrics metrics; - public static LogManager logs; + public static LoggerRegistry logs; } diff --git a/core/src/com/riiablo/engine/client/CursorMovementSystem.java b/core/src/com/riiablo/engine/client/CursorMovementSystem.java index fce7f905..65363e1a 100644 --- a/core/src/com/riiablo/engine/client/CursorMovementSystem.java +++ b/core/src/com/riiablo/engine/client/CursorMovementSystem.java @@ -1,7 +1,5 @@ package com.riiablo.engine.client; -import org.apache.logging.log4j.Logger; - import com.artemis.Aspect; import com.artemis.BaseSystem; import com.artemis.ComponentMapper; @@ -26,7 +24,8 @@ import com.riiablo.engine.server.component.Interactable; import com.riiablo.engine.server.component.Position; import com.riiablo.engine.server.component.Target; import com.riiablo.item.Item; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; import com.riiablo.map.Map; import com.riiablo.map.RenderSystem; import com.riiablo.profiler.ProfilerSystem; diff --git a/core/src/com/riiablo/engine/client/OverlayManager.java b/core/src/com/riiablo/engine/client/OverlayManager.java index 94f4db56..29cf103d 100644 --- a/core/src/com/riiablo/engine/client/OverlayManager.java +++ b/core/src/com/riiablo/engine/client/OverlayManager.java @@ -1,8 +1,5 @@ package com.riiablo.engine.client; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import com.artemis.ComponentMapper; import com.artemis.annotations.All; import com.artemis.systems.IteratingSystem; @@ -14,6 +11,8 @@ import com.riiablo.codec.Animation; import com.riiablo.codec.DC; import com.riiablo.codec.excel.Overlay; import com.riiablo.graphics.BlendMode; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; @All(com.riiablo.engine.client.component.Overlay.class) public class OverlayManager extends IteratingSystem { diff --git a/core/src/com/riiablo/engine/client/SkillCastHandler.java b/core/src/com/riiablo/engine/client/SkillCastHandler.java index e2e86c0b..3abfc09c 100644 --- a/core/src/com/riiablo/engine/client/SkillCastHandler.java +++ b/core/src/com/riiablo/engine/client/SkillCastHandler.java @@ -1,7 +1,5 @@ package com.riiablo.engine.client; -import org.apache.logging.log4j.Logger; - import net.mostlyoriginal.api.event.common.Subscribe; import net.mostlyoriginal.api.system.core.PassiveSystem; @@ -10,7 +8,8 @@ import com.riiablo.codec.excel.Skills; import com.riiablo.engine.server.event.SkillCastEvent; import com.riiablo.engine.server.event.SkillDoEvent; import com.riiablo.engine.server.event.SkillStartEvent; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; public class SkillCastHandler extends PassiveSystem { private static final Logger log = LogManager.getLogger(SkillCastHandler.class); diff --git a/core/src/com/riiablo/engine/server/Actioneer.java b/core/src/com/riiablo/engine/server/Actioneer.java index 5c7255db..ce463f11 100644 --- a/core/src/com/riiablo/engine/server/Actioneer.java +++ b/core/src/com/riiablo/engine/server/Actioneer.java @@ -1,7 +1,5 @@ package com.riiablo.engine.server; -import org.apache.logging.log4j.Logger; - import com.artemis.ComponentMapper; import net.mostlyoriginal.api.event.common.EventSystem; import net.mostlyoriginal.api.event.common.Subscribe; @@ -24,7 +22,8 @@ import com.riiablo.engine.server.event.AnimDataKeyframeEvent; import com.riiablo.engine.server.event.SkillCastEvent; import com.riiablo.engine.server.event.SkillDoEvent; import com.riiablo.engine.server.event.SkillStartEvent; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; public class Actioneer extends PassiveSystem { private static final Logger log = LogManager.getLogger(Actioneer.class); diff --git a/core/src/com/riiablo/engine/server/AnimStepper.java b/core/src/com/riiablo/engine/server/AnimStepper.java index 554567c9..fa00e04f 100644 --- a/core/src/com/riiablo/engine/server/AnimStepper.java +++ b/core/src/com/riiablo/engine/server/AnimStepper.java @@ -1,7 +1,5 @@ package com.riiablo.engine.server; -import org.apache.logging.log4j.Logger; - import com.artemis.ComponentMapper; import com.artemis.annotations.All; import com.artemis.systems.IntervalIteratingSystem; @@ -12,7 +10,8 @@ import com.riiablo.engine.Engine; import com.riiablo.engine.server.component.AnimData; import com.riiablo.engine.server.event.AnimDataFinishedEvent; import com.riiablo.engine.server.event.AnimDataKeyframeEvent; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; @All(AnimData.class) public class AnimStepper extends IntervalIteratingSystem { diff --git a/core/src/com/riiablo/item/ItemReader.java b/core/src/com/riiablo/item/ItemReader.java index 46339e42..713e8524 100644 --- a/core/src/com/riiablo/item/ItemReader.java +++ b/core/src/com/riiablo/item/ItemReader.java @@ -1,6 +1,5 @@ package com.riiablo.item; -import org.apache.logging.log4j.Logger; import com.badlogic.gdx.utils.Array; @@ -9,8 +8,9 @@ import com.riiablo.codec.excel.Gems; import com.riiablo.codec.util.BitStream; import com.riiablo.io.BitInput; import com.riiablo.io.ByteInput; -import com.riiablo.log.Log; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; +import com.riiablo.logger.MDC; public class ItemReader { private static final Logger log = LogManager.getLogger(ItemReader.class); @@ -27,17 +27,17 @@ public class ItemReader { if (item.socketsFilled > 0) log.trace("Reading {} sockets...", item.socketsFilled); for (int i = 0; i < item.socketsFilled; i++) { try { - Log.put("socket", i); + MDC.put("socket", i); in.skipUntil(SIGNATURE); item.sockets.add(readSingleItem(in)); } finally { - Log.remove("socket"); + MDC.remove("socket"); } } final int endOffset = in.bytesRead(); final int itemSize = endOffset - startOffset; // TODO: remove when serialization implemented item.data = in.duplicate(startOffset, itemSize); // TODO: remove when serialization implemented - if (log.isTraceEnabled()) { + if (log.traceEnabled()) { log.trace("size: {} (0x{}) (+{} .. +{})", itemSize, Integer.toHexString(itemSize), @@ -56,7 +56,7 @@ public class ItemReader { Item item = new Item(); item.reset(); item.flags = in.read32(); - Log.tracef(log, "flags: 0x%08X [%s]", item.flags, item.getFlagsString()); + log.tracef("flags: 0x%08X [%s]", item.flags, item.getFlagsString()); item.version = in.readSafe8u(); log.trace("version: {}", item.version); final BitInput bits = in.unalign(); @@ -101,7 +101,7 @@ public class ItemReader { private static void readStandard(BitInput bits, Item item) { item.id = (int) bits.readRaw(32); - Log.tracef(log, "id: 0x%08X", item.id); + log.tracef("id: 0x%08X", item.id); item.ilvl = bits.read7u(7); item.quality = Quality.valueOf(bits.read7u(4)); item.pictureId = bits.readBoolean() ? bits.read7u(3) : Item.NO_PICTURE_ID; @@ -128,10 +128,10 @@ public class ItemReader { for (int i = 0; i < Item.NUM_PROPS; i++) { if (((listFlags >> i) & 1) == 1) { try { - Log.put("propList", Item.getPropListString(i)); + MDC.put("propList", Item.getPropListString(i)); props[i] = PropertyList.obtain().read(bits); } finally { - Log.remove("propList"); + MDC.remove("propList"); } } } diff --git a/core/src/com/riiablo/item/ItemUtils.java b/core/src/com/riiablo/item/ItemUtils.java index 3047f19b..99628a5c 100644 --- a/core/src/com/riiablo/item/ItemUtils.java +++ b/core/src/com/riiablo/item/ItemUtils.java @@ -5,7 +5,7 @@ import com.badlogic.gdx.utils.GdxRuntimeException; import com.riiablo.Riiablo; import com.riiablo.codec.excel.Gems; import com.riiablo.codec.excel.ItemEntry; -import com.riiablo.log.Log; +import com.riiablo.logger.MDC; public class ItemUtils { private ItemUtils() {} @@ -31,14 +31,14 @@ public class ItemUtils { static PropertyList[] getGemProps(Gems.Entry gem) { PropertyList[] props = new PropertyList[Item.NUM_GEMPROPS]; try { - Log.put("propList", "GEMPROPS_WEAPON"); + MDC.put("propList", "GEMPROPS_WEAPON"); props[Item.GEMPROPS_WEAPON] = PropertyList.obtain().add(gem.weaponModCode, gem.weaponModParam, gem.weaponModMin, gem.weaponModMax); - Log.put("propList", "GEMPROPS_ARMOR"); + MDC.put("propList", "GEMPROPS_ARMOR"); props[Item.GEMPROPS_ARMOR] = PropertyList.obtain().add(gem.helmModCode, gem.helmModParam, gem.helmModMin, gem.helmModMax); - Log.put("propList", "GEMPROPS_SHIELD"); + MDC.put("propList", "GEMPROPS_SHIELD"); props[Item.GEMPROPS_SHIELD] = PropertyList.obtain().add(gem.shieldModCode, gem.shieldModParam, gem.shieldModMin, gem.shieldModMax); } finally { - Log.remove("propList"); + MDC.remove("propList"); } return props; } diff --git a/core/src/com/riiablo/item/ItemWriter.java b/core/src/com/riiablo/item/ItemWriter.java index 8f60a5d2..2a5f8dcf 100644 --- a/core/src/com/riiablo/item/ItemWriter.java +++ b/core/src/com/riiablo/item/ItemWriter.java @@ -2,7 +2,6 @@ package com.riiablo.item; import io.netty.buffer.ByteBufUtil; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; import com.riiablo.Riiablo; import com.riiablo.codec.excel.SetItems; @@ -10,8 +9,9 @@ import com.riiablo.codec.excel.Sets; import com.riiablo.io.BitInput; import com.riiablo.io.BitOutput; import com.riiablo.io.ByteOutput; -import com.riiablo.log.Log; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; +import com.riiablo.logger.MDC; public class ItemWriter { private static final Logger log = LogManager.getLogger(ItemWriter.class); @@ -24,14 +24,14 @@ public class ItemWriter { if (item.socketsFilled > 0) log.trace("Writing {} sockets...", item.socketsFilled); for (int i = 0; i < item.socketsFilled; i++) { try { - Log.put("socket", i); + MDC.put("socket", i); Item socket = item.sockets.get(i); writeSingleItem(socket, out); } finally { - Log.remove("socket"); + MDC.remove("socket"); } } - if (log.isDebugEnabled()) { + if (log.debugEnabled()) { final int endOffset = out.bytesWritten(); final int itemSize = endOffset - startOffset; log.debug("size: {} (0x{}) (+{} .. +{})", @@ -39,8 +39,8 @@ public class ItemWriter { Integer.toHexString(itemSize), Integer.toHexString(startOffset), Integer.toHexString(endOffset)); - if (log.isTraceEnabled()) { - Log.tracef(log, "bytes: %n%s", ByteBufUtil.prettyHexDump(out.buffer())); + if (log.traceEnabled()) { + log.tracef("bytes: %n%s", ByteBufUtil.prettyHexDump(out.buffer())); } else { log.debug("bytes: {}", ByteBufUtil.hexDump(out.buffer())); } diff --git a/core/src/com/riiablo/item/PropertyList.java b/core/src/com/riiablo/item/PropertyList.java index a8c5dd8a..87ac9655 100644 --- a/core/src/com/riiablo/item/PropertyList.java +++ b/core/src/com/riiablo/item/PropertyList.java @@ -2,7 +2,6 @@ package com.riiablo.item; import java.util.Comparator; import java.util.Iterator; -import org.apache.logging.log4j.Logger; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.utils.Array; @@ -13,8 +12,9 @@ import com.riiablo.codec.excel.ItemStatCost; import com.riiablo.codec.excel.Properties; import com.riiablo.io.BitInput; import com.riiablo.io.BitOutput; -import com.riiablo.log.Log; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; +import com.riiablo.logger.MDC; public class PropertyList implements Iterable { private static final Logger log = LogManager.getLogger(PropertyList.class); @@ -85,12 +85,12 @@ public class PropertyList implements Iterable { for (int prop; (prop = bitStream.read15u(Stat.BITS)) != Stat.NONE; ) { final int numEncoded = Stat.getNumEncoded(prop); try { - if (numEncoded > 1) Log.put("numEncoded", numEncoded); + if (numEncoded > 1) MDC.put("numEncoded", numEncoded); for (int j = prop, size = j + numEncoded; j < size; j++) { read(j, bitStream); } } finally { - Log.remove("numEncoded"); + MDC.remove("numEncoded"); } } diff --git a/core/src/com/riiablo/item/Stat.java b/core/src/com/riiablo/item/Stat.java index 61fc5547..a2cc8c7b 100644 --- a/core/src/com/riiablo/item/Stat.java +++ b/core/src/com/riiablo/item/Stat.java @@ -2,7 +2,6 @@ package com.riiablo.item; import com.google.common.primitives.UnsignedInts; import java.util.Arrays; -import org.apache.logging.log4j.Logger; import com.riiablo.CharacterClass; import com.riiablo.Riiablo; @@ -12,7 +11,8 @@ import com.riiablo.codec.excel.SkillDesc; import com.riiablo.codec.excel.Skills; import com.riiablo.io.BitInput; import com.riiablo.io.BitOutput; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; import com.riiablo.save.CharData; @SuppressWarnings("unused") diff --git a/core/src/com/riiablo/log/Log.java b/core/src/com/riiablo/log/Log.java deleted file mode 100644 index 49e28e9c..00000000 --- a/core/src/com/riiablo/log/Log.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.riiablo.log; - -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.ThreadContext; -import org.apache.logging.log4j.message.Message; -import org.apache.logging.log4j.message.MessageFactory; -import org.apache.logging.log4j.message.StringFormatterMessageFactory; - -public class Log { - private static final MessageFactory FORMAT_MESSAGE_FACTORY = StringFormatterMessageFactory.INSTANCE; - - private static Message createMessage(String format, Object... args) { - return FORMAT_MESSAGE_FACTORY.newMessage(format, args); - } - - public static void tracef(Logger logger, String format, Object... args) { - logger.trace(createMessage(format, args)); - } - - public static void debugf(Logger logger, String format, Object... args) { - logger.debug(createMessage(format, args)); - } - - public static void infof(Logger logger, String format, Object... args) { - logger.info(createMessage(format, args)); - } - - public static void warnf(Logger logger, String format, Object... args) { - logger.warn(createMessage(format, args)); - } - - public static void warnf(Logger logger, Throwable t, String format, Object... args) { - logger.warn(createMessage(format, args), t); - } - - public static void errorf(Logger logger, Throwable t, String format, Object... args) { - logger.error(createMessage(format, args), t); - } - - public static void put(String key, String value) { - ThreadContext.put(key, value); - } - - public static void put(String key, int value) { - put(key, String.valueOf(value)); - } - - public static void remove(String key) { - ThreadContext.remove(key); - } - - public static void clearMap() { - ThreadContext.clearMap(); - } -} diff --git a/core/src/com/riiablo/log/LogManager.java b/core/src/com/riiablo/log/LogManager.java deleted file mode 100644 index 228efacf..00000000 --- a/core/src/com/riiablo/log/LogManager.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.riiablo.log; - -import java.io.File; -import java.io.FileInputStream; -import java.util.SortedMap; -import org.apache.commons.collections4.Trie; -import org.apache.commons.collections4.trie.PatriciaTrie; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.config.ConfigurationSource; -import org.apache.logging.log4j.core.config.Configurator; - -public enum LogManager { - INSTANCE; - - // DO NOT USE GDX METHODS HERE - // THIS BLOCK SHOULD BE GDX AGNOSTIC - static { - // -Dlog4j.configurationFile=log4j2.xml - System.out.println("Initializing log4j2 configuration file..."); - try { - String log4jConfigFile = System.getProperty("user.dir") + File.separator + "log4j2.xml"; - ConfigurationSource source = new ConfigurationSource(new FileInputStream(log4jConfigFile)); - Configurator.initialize(null, source); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - public static Logger getLogger(Class clazz) { - return INSTANCE.get(clazz); - } - - public static Logger getLogger(String name) { - return INSTANCE.get(name); - } - - private final Trie loggers = new PatriciaTrie<>(); - - public Logger get(Class clazz) { - Logger logger = org.apache.logging.log4j.LogManager.getLogger(clazz); - loggers.put(logger.getName().toLowerCase(), logger); - return logger; - } - - public Logger get(String name) { - Logger logger = org.apache.logging.log4j.LogManager.getLogger(name); - loggers.put(logger.getName().toLowerCase(), logger); - return logger; - } - - public SortedMap prefixMap(String key) { - return loggers.prefixMap(key); - } -} diff --git a/core/src/com/riiablo/log/MDCLayout.java b/core/src/com/riiablo/log/MDCLayout.java deleted file mode 100644 index 829b3dd3..00000000 --- a/core/src/com/riiablo/log/MDCLayout.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.riiablo.log; - -import java.nio.charset.Charset; -import java.util.Map; -import java.util.Objects; -import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.core.Layout; -import org.apache.logging.log4j.core.LogEvent; -import org.apache.logging.log4j.core.config.Configuration; -import org.apache.logging.log4j.core.config.DefaultConfiguration; -import org.apache.logging.log4j.core.config.Node; -import org.apache.logging.log4j.core.config.plugins.Plugin; -import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute; -import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory; -import org.apache.logging.log4j.core.config.plugins.PluginConfiguration; -import org.apache.logging.log4j.core.config.plugins.PluginElement; -import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; -import org.apache.logging.log4j.core.layout.AbstractStringLayout; -import org.apache.logging.log4j.core.layout.ByteBufferDestination; -import org.apache.logging.log4j.core.layout.PatternLayout; -import org.apache.logging.log4j.util.BiConsumer; -import org.apache.logging.log4j.util.ReadOnlyStringMap; - -import com.badlogic.gdx.utils.OrderedMap; - -@Plugin( - name = "MDCLayout", - category = Node.CATEGORY, - elementType = Layout.ELEMENT_TYPE, - printObject = true -) -public class MDCLayout extends AbstractStringLayout { - private final PatternLayout parent; - private final boolean fullMode; - - private static final int MAX_DEPTH = 256; - private static final int DEPTH_STEP = 2; - - private int depth = 0; - private ReadOnlyStringMap ctx; - private final byte[] spaces = StringUtils.repeat(' ', MAX_DEPTH * DEPTH_STEP).getBytes(super.getCharset()); - private final byte[] endl = System.getProperty("line.separator").getBytes(super.getCharset()); - - public MDCLayout(Configuration config, Charset charset, PatternLayout parent, boolean fullMode) { - super(config, charset, null, null); - this.parent = parent; - this.fullMode = fullMode; - } - - @Override - public String toSerializable(LogEvent event) { - return parent.toSerializable(event); - } - - @Override - public boolean requiresLocation() { - return parent.requiresLocation(); - } - - @Override - public Map getContentFormat() { - return parent.getContentFormat(); - } - - @Deprecated - private void writeEntry( - ByteBufferDestination destination, - int depth, - OrderedMap.Entry entry - ) { - byte[] b = entry.toString().getBytes(getCharset()); - destination.writeBytes(spaces, 0, (depth - 1) * DEPTH_STEP + 1); - destination.writeBytes(b, 0, b.length); - destination.writeBytes(endl, 0, endl.length); - } - - private void writeEntry( - ByteBufferDestination destination, - int depth, - Object obj - ) { - byte[] b = String.valueOf(obj).getBytes(getCharset()); - if (depth > 0) destination.writeBytes(spaces, 0, (depth - 1) * DEPTH_STEP + 1); - destination.writeBytes(b, 0, b.length); - destination.writeBytes(endl, 0, endl.length); - } - - // Deprecated. May be needed when implementing different output - @Deprecated - private void writeMapDifference( - ByteBufferDestination destination, - int depth, - final ReadOnlyStringMap parent, - final ReadOnlyStringMap child - ) { - final StringBuilder sb = new StringBuilder(); - sb.append('{'); - child.forEach(new BiConsumer() { - @Override - public void accept(String s, Object o) { - if (parent != null && Objects.equals(parent.getValue(s), o)) return; - sb.append(s); - sb.append(':'); - sb.append(o); - sb.append(','); - } - }); - if (sb.length() > 1) sb.setLength(sb.length() - 1); - sb.append('}'); - writeEntry(destination, depth, sb); - } - - @Override - public void encode(LogEvent event, ByteBufferDestination destination) { - if (fullMode) { - parent.encode(event, destination); - destination.writeBytes(spaces, 0, 1); - writeEntry(destination, 0, event.getContextData()); - } else { - ReadOnlyStringMap ctx = event.getContextData(); - depth = ctx.size(); - if (depth > 0) { - if (!ctx.equals(this.ctx)) { - writeEntry(destination, depth, ctx); - this.ctx = ctx; - } - - destination.writeBytes(spaces, 0, depth * DEPTH_STEP); - } - - parent.encode(event, destination); - destination.writeBytes(endl, 0, endl.length); - } - } - - @Override - public String toString() { - return parent.toString(); - } - - @PluginBuilderFactory - public static Builder newBuilder() { - return new Builder(); - } - - public static class Builder implements org.apache.logging.log4j.core.util.Builder { - @PluginElement("PatternLayout") - @Required - private PatternLayout patternLayout; - - // LOG4J2-783 use platform default by default - @PluginBuilderAttribute - private Charset charset = Charset.defaultCharset(); - - @PluginConfiguration - private Configuration configuration; - - @PluginBuilderAttribute - private boolean fullMode = false; - - private Builder() {} - - public Builder withPatternLayout(final PatternLayout patternLayout) { - this.patternLayout = patternLayout; - return this; - } - - public Builder withConfiguration(final Configuration configuration) { - this.configuration = configuration; - return this; - } - - public Builder withCharset(final Charset charset) { - // LOG4J2-783 if null, use platform default by default - if (charset != null) { - this.charset = charset; - } - return this; - } - - public Builder withFullMode(final boolean fullMode) { - this.fullMode = fullMode; - return this; - } - - @Override - public MDCLayout build() { - // fall back to DefaultConfiguration - if (configuration == null) { - configuration = new DefaultConfiguration(); - } - return new MDCLayout(configuration, charset, patternLayout, fullMode); - } - } -} diff --git a/core/src/com/riiablo/log/OrderedThreadContextMap.java b/core/src/com/riiablo/log/OrderedThreadContextMap.java deleted file mode 100644 index 9e5df78e..00000000 --- a/core/src/com/riiablo/log/OrderedThreadContextMap.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.riiablo.log; - -import java.util.Map; -import org.apache.commons.collections4.OrderedMap; -import org.apache.commons.collections4.map.LinkedMap; -import org.apache.commons.collections4.map.UnmodifiableOrderedMap; -import org.apache.logging.log4j.spi.ThreadContextMap; -import org.apache.logging.log4j.util.BiConsumer; -import org.apache.logging.log4j.util.PropertiesUtil; -import org.apache.logging.log4j.util.ReadOnlyStringMap; -import org.apache.logging.log4j.util.TriConsumer; - -@Deprecated -public class OrderedThreadContextMap implements ThreadContextMap, ReadOnlyStringMap { - /** - * Property name ({@value} ) for selecting {@code InheritableThreadLocal} (value "true") or plain - * {@code ThreadLocal} (value is not "true") in the implementation. - */ - public static final String INHERITABLE_MAP = "isThreadContextMapInheritable"; - - private final boolean useMap; - private final ThreadLocal> localMap; - - private static boolean inheritableMap; - - static { - init(); - } - - static OrderedMap unmodifiableOrderedMap(OrderedMap map) { - return UnmodifiableOrderedMap.unmodifiableOrderedMap(map); - } - - // LOG4J2-479: by default, use a plain ThreadLocal, only use InheritableThreadLocal if configured. - // (This method is package protected for JUnit tests.) - static ThreadLocal> createThreadLocalMap(final boolean isMapEnabled) { - if (inheritableMap) { - return new InheritableThreadLocal>() { - @Override - protected OrderedMap childValue(final OrderedMap parentValue) { - return parentValue != null && isMapEnabled - ? unmodifiableOrderedMap(new LinkedMap<>(parentValue)) - : null; - } - }; - } - // if not inheritable, return plain ThreadLocal with null as initial value - return new ThreadLocal<>(); - } - - static void init() { - inheritableMap = PropertiesUtil.getProperties().getBooleanProperty(INHERITABLE_MAP); - } - - public OrderedThreadContextMap() { - this(true); - } - - public OrderedThreadContextMap(final boolean useMap) { - this.useMap = useMap; - this.localMap = createThreadLocalMap(useMap); - } - - @Override - public void put(final String key, final String value) { - if (!useMap) { - return; - } - OrderedMap map = localMap.get(); - map = map == null ? new LinkedMap(1) : new LinkedMap<>(map); - map.put(key, value); - localMap.set(unmodifiableOrderedMap(map)); - } - - public void putAll(final Map m) { - if (!useMap) { - return; - } - OrderedMap map = localMap.get(); - map = map == null ? new LinkedMap(m.size()) : new LinkedMap<>(map); - for (final Map.Entry e : m.entrySet()) { - map.put(e.getKey(), e.getValue()); - } - localMap.set(unmodifiableOrderedMap(map)); - } - - @Override - public String get(final String key) { - final Map map = localMap.get(); - return map == null ? null : map.get(key); - } - - @Override - public void remove(final String key) { - final Map map = localMap.get(); - if (map != null) { - final OrderedMap copy = new LinkedMap<>(map); - copy.remove(key); - localMap.set(unmodifiableOrderedMap(copy)); - } - } - - public void removeAll(final Iterable keys) { - final Map map = localMap.get(); - if (map != null) { - final OrderedMap copy = new LinkedMap<>(map); - for (final String key : keys) { - copy.remove(key); - } - localMap.set(unmodifiableOrderedMap(copy)); - } - } - - @Override - public void clear() { - localMap.remove(); - } - - @Override - public Map toMap() { - return getCopy(); - } - - @Override - public boolean containsKey(final String key) { - final Map map = localMap.get(); - return map != null && map.containsKey(key); - } - - @Override - public void forEach(final BiConsumer action) { - final Map map = localMap.get(); - if (map == null) { - return; - } - for (final Map.Entry entry : map.entrySet()) { - //BiConsumer should be able to handle values of any type V. In our case the values are of type String. - @SuppressWarnings("unchecked") - final - V value = (V) entry.getValue(); - action.accept(entry.getKey(), value); - } - } - - @Override - public void forEach(final TriConsumer action, final S state) { - final Map map = localMap.get(); - if (map == null) { - return; - } - for (final Map.Entry entry : map.entrySet()) { - //TriConsumer should be able to handle values of any type V. In our case the values are of type String. - @SuppressWarnings("unchecked") - final - V value = (V) entry.getValue(); - action.accept(entry.getKey(), value, state); - } - } - - @SuppressWarnings("unchecked") - @Override - public V getValue(final String key) { - final Map map = localMap.get(); - return (V) (map == null ? null : map.get(key)); - } - - @Override - public Map getCopy() { - final Map map = localMap.get(); - return map == null ? new LinkedMap() : new LinkedMap<>(map); - } - - @Override - public Map getImmutableMapOrNull() { - return localMap.get(); - } - - @Override - public boolean isEmpty() { - final Map map = localMap.get(); - return map == null || map.size() == 0; - } - - @Override - public int size() { - final Map map = localMap.get(); - return map == null ? 0 : map.size(); - } - - @Override - public String toString() { - final Map map = localMap.get(); - return map == null ? "{}" : map.toString(); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - final Map map = this.localMap.get(); - result = prime * result + ((map == null) ? 0 : map.hashCode()); - result = prime * result + Boolean.valueOf(this.useMap).hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (obj instanceof OrderedThreadContextMap) { - final OrderedThreadContextMap other = (OrderedThreadContextMap) obj; - if (this.useMap != other.useMap) { - return false; - } - } - if (!(obj instanceof ThreadContextMap)) { - return false; - } - final ThreadContextMap other = (ThreadContextMap) obj; - final Map map = this.localMap.get(); - final Map otherMap = other.getImmutableMapOrNull(); - if (map == null) { - if (otherMap != null) { - return false; - } - } else if (!map.equals(otherMap)) { - return false; - } - return true; - } -} diff --git a/core/src/com/riiablo/save/D2SReader.java b/core/src/com/riiablo/save/D2SReader.java index 9de383e2..6a05f7b1 100644 --- a/core/src/com/riiablo/save/D2SReader.java +++ b/core/src/com/riiablo/save/D2SReader.java @@ -1,7 +1,6 @@ package com.riiablo.save; import io.netty.util.ByteProcessor; -import org.apache.logging.log4j.Logger; import com.badlogic.gdx.files.FileHandle; @@ -9,8 +8,9 @@ import com.riiablo.io.ByteInput; import com.riiablo.io.InvalidFormat; import com.riiablo.io.UnsafeNarrowing; import com.riiablo.item.ItemReader; -import com.riiablo.log.Log; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; +import com.riiablo.logger.MDC; public enum D2SReader { INSTANCE; @@ -58,7 +58,7 @@ public enum D2SReader { d2s.version = in.readSafe32u(); log.debug("version: {} ({})", d2s.version, D2S.getVersionString(d2s.version)); try { - Log.put("d2s.version", d2s.version); + MDC.put("d2s.version", d2s.version); switch (d2s.version) { case D2S.VERSION_110: return D2SReader96.readHeader(in, d2s); @@ -71,13 +71,13 @@ public enum D2SReader { return d2s; } } finally { - Log.remove("d2s.version"); + MDC.remove("d2s.version"); } } public D2S readRemaining(D2S d2s, ByteInput in, ItemReader itemReader) { try { - Log.put("d2s.version", d2s.version); + MDC.put("d2s.version", d2s.version); switch (d2s.version) { case D2S.VERSION_110: return D2SReader96.readRemaining(d2s, in, itemReader); @@ -90,13 +90,13 @@ public enum D2SReader { return d2s; } } finally { - Log.remove("d2s.version"); + MDC.remove("d2s.version"); } } CharData copyTo(D2S d2s, CharData data) { try { - Log.put("d2s.version", d2s.version); + MDC.put("d2s.version", d2s.version); switch (d2s.version) { case D2S.VERSION_110: return D2SReader96.copyTo(d2s, data); @@ -109,7 +109,7 @@ public enum D2SReader { return data; } } finally { - Log.remove("d2s.version"); + MDC.remove("d2s.version"); } } } diff --git a/core/src/com/riiablo/save/D2SReader96.java b/core/src/com/riiablo/save/D2SReader96.java index a658cbca..0156de36 100644 --- a/core/src/com/riiablo/save/D2SReader96.java +++ b/core/src/com/riiablo/save/D2SReader96.java @@ -2,7 +2,6 @@ package com.riiablo.save; import io.netty.buffer.ByteBufUtil; import java.util.Arrays; -import org.apache.logging.log4j.Logger; import com.badlogic.gdx.utils.Array; @@ -19,8 +18,9 @@ import com.riiablo.item.Item; import com.riiablo.item.ItemReader; import com.riiablo.item.PropertyList; import com.riiablo.item.Stat; -import com.riiablo.log.Log; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; +import com.riiablo.logger.MDC; import com.riiablo.util.DebugUtils; public class D2SReader96 { @@ -82,11 +82,11 @@ public class D2SReader96 { d2s.alternate = in.readSafe32u(); d2s.name = in.readString(Riiablo.MAX_NAME_LENGTH + 1); try { - Log.put("d2s.name", d2s.name); + MDC.put("d2s.name", d2s.name); log.debug("name: \"{}\"", d2s.name); - Log.tracef(log, "checksum: 0x%08X", d2s.checksum); + log.tracef("checksum: 0x%08X", d2s.checksum); d2s.flags = in.read32(); - Log.debugf(log, "flags: 0x%08X [%s]", d2s.flags, d2s.getFlagsString()); + log.debugf("flags: 0x%08X [%s]", d2s.flags, d2s.getFlagsString()); d2s.charClass = in.readSafe8u(); log.debug("charClass: {} ({})", d2s.charClass, DebugUtils.getClassString(d2s.charClass)); in.skipBytes(2); // unknown @@ -95,30 +95,30 @@ public class D2SReader96 { d2s.timestamp = in.read32(); in.skipBytes(4); // unknown d2s.hotkeys = readInts(in, D2S.NUM_HOTKEYS); - if (log.isDebugEnabled()) log.debug("hotkeys: {}", Arrays.toString(d2s.hotkeys)); + if (log.debugEnabled()) log.debug("hotkeys: {}", Arrays.toString(d2s.hotkeys)); d2s.actions = new int[D2S.NUM_ACTIONS][D2S.NUM_BUTTONS]; for (int i = 0; i < D2S.NUM_ACTIONS; i++) { final int[] actions = d2s.actions[i] = readInts(in, D2S.NUM_BUTTONS); - if (log.isDebugEnabled()) log.debug("actions[{}]: {}", i, Arrays.toString(actions)); + if (log.debugEnabled()) log.debug("actions[{}]: {}", i, Arrays.toString(actions)); } d2s.composites = in.readBytes(COF.Component.NUM_COMPONENTS); - if (log.isDebugEnabled()) log.debug("composites: {}", ByteBufUtil.hexDump(d2s.composites)); + if (log.debugEnabled()) log.debug("composites: {}", ByteBufUtil.hexDump(d2s.composites)); d2s.colors = in.readBytes(COF.Component.NUM_COMPONENTS); - if (log.isDebugEnabled()) log.debug("colors: {}", ByteBufUtil.hexDump(d2s.colors)); + if (log.debugEnabled()) log.debug("colors: {}", ByteBufUtil.hexDump(d2s.colors)); d2s.towns = in.readBytes(Riiablo.NUM_DIFFS); - if (log.isDebugEnabled()) log.debug("towns: {} ({})", ByteBufUtil.hexDump(d2s.towns), d2s.getTownsString()); + if (log.debugEnabled()) log.debug("towns: {} ({})", ByteBufUtil.hexDump(d2s.towns), d2s.getTownsString()); d2s.mapSeed = in.read32(); - Log.debugf(log, "mapSeed: 0x%08X", d2s.mapSeed); + log.debugf("mapSeed: 0x%08X", d2s.mapSeed); try { - Log.put("d2s.section", "merc"); + MDC.put("d2s.section", "merc"); d2s.merc = readMercData(in); } finally { - Log.remove("d2s.section"); + MDC.remove("d2s.section"); } in.skipBytes(144); // realm data (unused) assert in.bytesRemaining() == 0 : "in.bytesRemaining(" + in.bytesRemaining() + ") > " + 0; } finally { - Log.remove("d2s.name"); + MDC.remove("d2s.name"); } return d2s; } @@ -127,9 +127,9 @@ public class D2SReader96 { in = in.readSlice(MERC_SIZE); D2S.MercData merc = new D2S.MercData(); merc.flags = in.read32(); - Log.debugf(log, "merc.flags: 0x%08X", merc.flags); + log.debugf("merc.flags: 0x%08X", merc.flags); merc.seed = in.read32(); - Log.debugf(log, "merc.seed: 0x%08X", merc.seed); + log.debugf("merc.seed: 0x%08X", merc.seed); merc.name = in.readSafe16u(); log.debug("merc.name: {}", merc.name); merc.type = in.readSafe16u(); @@ -153,44 +153,44 @@ public class D2SReader96 { static D2S readRemaining(D2S d2s, ByteInput in, ItemReader itemReader) { try { - Log.put("d2s.name", d2s.name); + MDC.put("d2s.name", d2s.name); - Log.put("d2s.section", "quests"); + MDC.put("d2s.section", "quests"); d2s.quests = readQuestData(in); - Log.put("d2s.section", "waypoints"); + MDC.put("d2s.section", "waypoints"); d2s.waypoints = readWaypointData(in); - Log.put("d2s.section", "npcs"); + MDC.put("d2s.section", "npcs"); d2s.npcs = readNPCData(in); - Log.put("d2s.section", "stats"); + MDC.put("d2s.section", "stats"); d2s.stats = readStatData(in); recover(in, SKILLS_SIGNATURE, "skills"); - Log.put("d2s.section", "skills"); + MDC.put("d2s.section", "skills"); d2s.skills = readSkillData(in); recover(in, ITEMS_SIGNATURE, "items"); - Log.put("d2s.section", "items"); + MDC.put("d2s.section", "items"); d2s.items = readItemData(in, itemReader); recover(in, ITEMS_SIGNATURE, "corpse"); - Log.put("d2s.section", "corpse"); + MDC.put("d2s.section", "corpse"); d2s.corpse = readItemData(in, itemReader); recover(in, MERC_SIGNATURE, "merc"); - Log.put("d2s.section", "merc"); + MDC.put("d2s.section", "merc"); d2s.merc = readMercData(d2s.merc, in, itemReader); recover(in, GOLEM_SIGNATURE, "golem"); - Log.put("d2s.section", "golem"); + MDC.put("d2s.section", "golem"); d2s.golem = readGolemData(in, itemReader); d2s.bodyRead = true; } finally { - Log.remove("d2s.section"); - Log.remove("d2s.name"); + MDC.remove("d2s.section"); + MDC.remove("d2s.name"); } return d2s; } @@ -208,8 +208,8 @@ public class D2SReader96 { final byte[][] flags = quests.flags = new byte[D2S.NUM_DIFFS][]; for (int i = 0; i < D2S.NUM_DIFFS; i++) { flags[i] = in.readBytes(D2S.QuestData.NUM_QUESTFLAGS); - if (log.isDebugEnabled()) { - Log.debugf(log, "quests.flags[%.4s]: %s", + if (log.debugEnabled()) { + log.debugf("quests.flags[%.4s]: %s", DebugUtils.getDifficultyString(i), ByteBufUtil.hexDump(flags[i])); } @@ -231,8 +231,8 @@ public class D2SReader96 { final byte[][] flags = waypoints.flags = new byte[D2S.NUM_DIFFS][]; for (int i = 0; i < D2S.NUM_DIFFS; i++) { flags[i] = readWaypointFlags(in); - if (log.isDebugEnabled()) { - Log.debugf(log, "waypoints.flags[%.4s]: %s", + if (log.debugEnabled()) { + log.debugf("waypoints.flags[%.4s]: %s", DebugUtils.getDifficultyString(i), ByteBufUtil.hexDump(flags[i])); } @@ -261,8 +261,8 @@ public class D2SReader96 { for (int i = 0; i < D2S.NPCData.NUM_GREETINGS; i++) { for (int j = 0; j < D2S.NUM_DIFFS; j++) { flags[i][j] = in.readBytes(D2S.NPCData.NUM_INTROS); - if (log.isDebugEnabled()) { - Log.debugf(log, "npcs.flags[%s][%.4s]: %s", + if (log.debugEnabled()) { + log.debugf("npcs.flags[%s][%.4s]: %s", D2S.NPCData.getGreetingString(i), DebugUtils.getDifficultyString(j), ByteBufUtil.hexDump(flags[i][j])); @@ -383,9 +383,11 @@ public class D2SReader96 { in = in.readSlice(SKILLS_SIZE - SKILLS_SIGNATURE.length); D2S.SkillData skills = new D2S.SkillData(); skills.skills = in.readBytes(D2S.SkillData.NUM_TREES * D2S.SkillData.NUM_SKILLS); - if (log.isDebugEnabled()) { + if (log.debugEnabled()) { for (int i = 0, j = 0; i < D2S.SkillData.NUM_TREES; i++, j += D2S.SkillData.NUM_SKILLS) { - Log.debugf(log, "skills.skills[%d] = %s", i, ByteBufUtil.hexDump(skills.skills, j, D2S.SkillData.NUM_SKILLS)); + log.debugf("skills.skills[%d] = %s", + i, + ByteBufUtil.hexDump(skills.skills, j, D2S.SkillData.NUM_SKILLS)); } } assert in.bytesRemaining() == 0 : "in.bytesRemaining(" + in.bytesRemaining() + ") > " + 0; @@ -402,20 +404,20 @@ public class D2SReader96 { int errors = 0; for (int i = 0; i < size; i++) { try { - Log.put("item", i); + MDC.put("item", i); final Item item = itemReader.readItem(in); log.debug("item: {}", item); itemList.add(item); } catch (SignatureMismatch t) { - log.warn(t); + log.warn(t.getMessage(), t); i--; itemReader.skipUntil(in.realign()); } catch (InvalidFormat t) { - log.warn(t); + log.warn(t.getMessage(), t); errors++; itemReader.skipUntil(in.realign()); } finally { - Log.remove("item"); + MDC.remove("item"); } } assert itemList.size == size : "itemList.size(" + itemList.size + ") != size(" + size + ")"; diff --git a/core/src/com/riiablo/save/D2SWriter.java b/core/src/com/riiablo/save/D2SWriter.java index ebb1e9fc..b5699e88 100644 --- a/core/src/com/riiablo/save/D2SWriter.java +++ b/core/src/com/riiablo/save/D2SWriter.java @@ -1,10 +1,9 @@ package com.riiablo.save; -import org.apache.logging.log4j.Logger; - import com.riiablo.io.ByteOutput; -import com.riiablo.log.Log; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; +import com.riiablo.logger.MDC; public enum D2SWriter { INSTANCE; @@ -24,7 +23,7 @@ public enum D2SWriter { out.writeBytes(SIGNATURE); out.write32(d2s.version); try { - Log.put("d2s.version", d2s.version); + MDC.put("d2s.version", d2s.version); switch (d2s.version) { case D2S.VERSION_110: D2SWriter96.writeHeader(d2s, out); @@ -38,7 +37,7 @@ public enum D2SWriter { return; } } finally { - Log.remove("d2s.version"); + MDC.remove("d2s.version"); } } } diff --git a/core/src/com/riiablo/save/D2SWriter96.java b/core/src/com/riiablo/save/D2SWriter96.java index 7c4e06be..9040b362 100644 --- a/core/src/com/riiablo/save/D2SWriter96.java +++ b/core/src/com/riiablo/save/D2SWriter96.java @@ -1,10 +1,9 @@ package com.riiablo.save; -import org.apache.logging.log4j.Logger; - import com.riiablo.Riiablo; import com.riiablo.io.ByteOutput; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; public class D2SWriter96 { private static final Logger log = LogManager.getLogger(D2SWriter96.class); diff --git a/core/src/com/riiablo/save/D2SWriterStub.java b/core/src/com/riiablo/save/D2SWriterStub.java index 78ebbd43..28d224e0 100644 --- a/core/src/com/riiablo/save/D2SWriterStub.java +++ b/core/src/com/riiablo/save/D2SWriterStub.java @@ -1,12 +1,12 @@ package com.riiablo.save; import org.apache.commons.lang3.ArrayUtils; -import org.apache.logging.log4j.Logger; import com.badlogic.gdx.utils.ObjectMap; import com.riiablo.io.ByteOutput; -import com.riiablo.log.LogManager; +import com.riiablo.logger.LogManager; +import com.riiablo.logger.Logger; public class D2SWriterStub { private static final Logger log = LogManager.getLogger(D2SWriterStub.class); diff --git a/core/src/com/riiablo/suggester/LoggerLevelSuggester.java b/core/src/com/riiablo/suggester/LoggerLevelSuggester.java index 24b42d7f..1fa72740 100644 --- a/core/src/com/riiablo/suggester/LoggerLevelSuggester.java +++ b/core/src/com/riiablo/suggester/LoggerLevelSuggester.java @@ -4,10 +4,10 @@ import java.util.Set; import java.util.SortedMap; import org.apache.commons.collections4.Trie; import org.apache.commons.collections4.trie.PatriciaTrie; -import org.apache.logging.log4j.Level; import com.riiablo.console.Console; import com.riiablo.console.ConsoleUtils; +import com.riiablo.logger.Level; import com.riiablo.util.StringUtils; public enum LoggerLevelSuggester implements Console.SuggestionProvider { diff --git a/core/src/com/riiablo/suggester/LoggerSuggester.java b/core/src/com/riiablo/suggester/LoggerSuggester.java index 122e9b2a..1f519e69 100644 --- a/core/src/com/riiablo/suggester/LoggerSuggester.java +++ b/core/src/com/riiablo/suggester/LoggerSuggester.java @@ -3,7 +3,6 @@ package com.riiablo.suggester; import java.util.Set; import java.util.SortedMap; -import com.riiablo.Riiablo; import com.riiablo.console.Console; import com.riiablo.console.ConsoleUtils; import com.riiablo.util.StringUtils; @@ -13,8 +12,9 @@ public enum LoggerSuggester implements Console.SuggestionProvider { @Override public int suggest(Console console, CharSequence buffer, String[] args, int targetArg) { + if (true) return 0; String arg = targetArg == args.length ? "" : args[targetArg]; - SortedMap keys = Riiablo.logs.prefixMap(arg); + SortedMap keys = null;//Riiablo.logs.prefixMap(arg); switch (keys.size()) { case 0: return 0; diff --git a/tools/src/com/riiablo/save/D2SReaderTool.java b/tools/src/com/riiablo/save/D2SReaderTool.java index d1ba3464..f7f6e880 100644 --- a/tools/src/com/riiablo/save/D2SReaderTool.java +++ b/tools/src/com/riiablo/save/D2SReaderTool.java @@ -15,6 +15,8 @@ import com.riiablo.Riiablo; import com.riiablo.codec.StringTBLs; import com.riiablo.io.ByteInput; import com.riiablo.item.ItemReader; +import com.riiablo.logger.Level; +import com.riiablo.logger.LogManager; import com.riiablo.mpq.MPQFileHandleResolver; public class D2SReaderTool extends ApplicationAdapter { @@ -42,6 +44,9 @@ public class D2SReaderTool extends ApplicationAdapter { Riiablo.files = new Files(Riiablo.assets); Riiablo.string = new StringTBLs(Riiablo.mpqs); + LogManager.setLevel("com.riiablo.save", Level.ALL); + LogManager.setLevel("com.riiablo.item", Level.ALL); + ItemReader itemReader = new ItemReader(); D2SReader serializer = D2SReader.INSTANCE; for (String d2ss0 : d2ss) {