From d7c144a8301943837ae2d3f641ca22ee53359152 Mon Sep 17 00:00:00 2001
From: modmuss50 <modmuss50@gmail.com>
Date: Sun, 30 Jan 2022 21:37:23 +0000
Subject: [PATCH] Migrate to SLF4j and update loom (#1960)

* Migrate to SLF4j and update loom

* Update loom

* Update to latest loom
---
 build.gradle                                           |  4 +++-
 .../fabric/impl/base/event/ArrayBackedEvent.java       |  6 +++---
 .../java/net/fabricmc/fabric/test/base/EventTests.java |  6 +++---
 .../fabric/api/lookup/v1/custom/ApiLookupMap.java      |  2 +-
 .../fabric/impl/lookup/block/BlockApiLookupImpl.java   |  6 +++---
 .../fabric/impl/lookup/entity/EntityApiLookupImpl.java |  6 +++---
 .../fabric/impl/lookup/item/ItemApiLookupImpl.java     |  6 +++---
 .../impl/biome/modification/BiomeModificationImpl.java |  6 +++---
 .../impl/command/client/ClientCommandInternals.java    | 10 +++++-----
 .../net/fabricmc/fabric/test/command/CommandTest.java  |  6 +++---
 .../fabric/test/command/client/ClientCommandTest.java  |  6 +++---
 .../client/container/ScreenProviderRegistryImpl.java   |  6 +++---
 .../fabric/impl/container/ContainerProviderImpl.java   |  6 +++---
 .../fabric/api/registry/FlattenableBlockRegistry.java  |  6 +++---
 .../fabric/api/registry/StrippableBlockRegistry.java   |  6 +++---
 .../fabric/impl/content/registry/FuelRegistryImpl.java |  6 +++---
 .../test/content/registry/ContentRegistryTest.java     |  6 +++---
 .../fabric/impl/datagen/FabricDataGenHelper.java       |  6 +++---
 .../fabric/test/entity/event/EntityEventTests.java     |  6 +++---
 .../test/event/interaction/AttackBlockTests.java       |  6 +++---
 .../test/event/interaction/PlayerBreakBlockTests.java  |  6 +++---
 .../lifecycle/legacy/LegacyLifecycleEventsTest.java    |  6 +++---
 .../fabric/api/gamerule/v1/rule/DoubleRule.java        |  6 +++---
 .../fabricmc/fabric/api/gamerule/v1/rule/EnumRule.java |  6 +++---
 .../fabric/impl/gamerule/rule/BoundedIntRule.java      |  6 +++---
 .../fabric/test/gamerule/GameRulesTestMod.java         |  6 +++---
 .../fabric/impl/gametest/FabricGameTestHelper.java     |  6 +++---
 .../impl/gametest/FabricGameTestModInitializer.java    |  6 +++---
 .../impl/client/keybinding/KeyBindingRegistryImpl.java |  4 ----
 .../lifecycle/ServerBlockEntityLifecycleTests.java     |  2 +-
 .../event/lifecycle/ServerEntityLifecycleTests.java    |  2 +-
 .../test/event/lifecycle/ServerLifecycleTests.java     |  6 +++---
 .../event/lifecycle/ServerResourceReloadTests.java     |  6 +++---
 .../client/ClientBlockEntityLifecycleTests.java        |  2 +-
 .../lifecycle/client/ClientEntityLifecycleTests.java   |  2 +-
 .../java/net/fabricmc/fabric/test/loot/LootTest.java   |  6 +++---
 .../impl/mininglevel/MiningLevelManagerImpl.java       |  6 +++---
 .../fabric/test/mininglevel/MiningLevelTest.java       |  6 +++---
 .../impl/client/model/ModelLoadingRegistryImpl.java    | 10 +++++-----
 .../fabric/impl/networking/AbstractNetworkAddon.java   |  6 +++---
 .../fabric/impl/networking/NetworkingImpl.java         |  6 +++---
 .../fabric/test/networking/NetworkingTestmods.java     |  6 +++---
 .../v1/entity/FabricDefaultAttributeRegistry.java      |  6 +++---
 .../builder/v1/entity/FabricEntityTypeBuilder.java     |  3 ---
 .../v1/entity/MinecartComparatorLogicRegistry.java     |  6 +++---
 .../object/builder/v1/villager/VillagerTypeHelper.java |  6 +++---
 .../impl/object/builder/TradeOfferInternals.java       |  6 +++---
 .../object/builder/ObjectBuilderTestConstants.java     |  6 +++---
 .../fabric/api/entity/EntityTrackingRegistry.java      |  6 +++---
 .../fabric/impl/registry/sync/DynamicRegistrySync.java |  6 +++---
 .../impl/registry/sync/FabricRegistryClientInit.java   |  6 +++---
 .../fabric/impl/registry/sync/RegistrySyncManager.java |  6 +++---
 .../registry/sync/trackers/Int2ObjectMapTracker.java   |  6 +++---
 .../impl/registry/sync/trackers/StateIdTracker.java    |  6 +++---
 .../fabric/mixin/registry/sync/MixinIdRegistry.java    |  6 +++---
 .../mixin/registry/sync/MixinLevelStorageSession.java  |  6 +++---
 .../mixin/registry/sync/MixinSimpleRegistry.java       |  6 +++---
 .../registry/sync/client/MixinMinecraftClient.java     |  6 +++---
 .../test/registry/sync/RegistrySyncTestClient.java     |  6 +++---
 .../net/fabricmc/fabric/impl/client/indigo/Indigo.java |  6 +++---
 .../client/indigo/renderer/aocalc/AoCalculator.java    |  6 +++---
 .../client/MixinChunkRendererRegionBuilder.java        |  6 +++---
 .../test/rendering/client/FeatureRendererTest.java     |  6 +++---
 .../resource/conditions/ResourceConditionsImpl.java    |  6 +++---
 .../impl/resource/loader/ModNioResourcePack.java       |  6 +++---
 .../resource/loader/ResourceManagerHelperImpl.java     |  6 +++---
 .../resource/loader/BuiltinResourcePackTestMod.java    |  6 +++---
 .../net/fabricmc/fabric/test/screen/ScreenTests.java   |  6 +++---
 .../fabricmc/fabric/impl/screenhandler/Networking.java |  6 +++---
 .../impl/screenhandler/client/ClientNetworking.java    |  6 +++---
 .../fabricmc/fabric/test/structure/StructureTest.java  |  6 +++---
 .../fabric/impl/tag/extension/TagFactoryImpl.java      |  6 +++---
 .../fabricmc/fabric/impl/transfer/TransferApiImpl.java |  6 +++---
 .../fabric/impl/transfer/fluid/FluidVariantImpl.java   |  6 +++---
 .../fabric/impl/transfer/item/ItemVariantImpl.java     |  6 +++---
 .../test/transfer/unittests/UnitTestsInitializer.java  |  4 ++--
 76 files changed, 215 insertions(+), 220 deletions(-)

diff --git a/build.gradle b/build.gradle
index 54bde3a1d..6a9fe568f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,7 +9,7 @@ plugins {
 	id "eclipse"
 	id "idea"
 	id "maven-publish"
-	id "fabric-loom" version "0.10.60" apply false
+	id "fabric-loom" version "0.11.27" apply false
 	id "org.cadixdev.licenser" version "0.6.1"
 	id "org.ajoberstar.grgit" version "3.1.0"
 	id "com.matthewprenger.cursegradle" version "1.4.0"
@@ -89,6 +89,8 @@ allprojects {
 	}
 
 	loom {
+		runtimeOnlyLog4j = true
+
 		runs {
 			testmodClient {
 				client()
diff --git a/fabric-api-base/src/main/java/net/fabricmc/fabric/impl/base/event/ArrayBackedEvent.java b/fabric-api-base/src/main/java/net/fabricmc/fabric/impl/base/event/ArrayBackedEvent.java
index 96a1b11e7..01f1c725c 100644
--- a/fabric-api-base/src/main/java/net/fabricmc/fabric/impl/base/event/ArrayBackedEvent.java
+++ b/fabric-api-base/src/main/java/net/fabricmc/fabric/impl/base/event/ArrayBackedEvent.java
@@ -24,15 +24,15 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.function.Function;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.Identifier;
 
 import net.fabricmc.fabric.api.event.Event;
 
 class ArrayBackedEvent<T> extends Event<T> {
-	static final Logger LOGGER = LogManager.getLogger("fabric-api-base");
+	static final Logger LOGGER = LoggerFactory.getLogger("fabric-api-base");
 
 	private final Function<T[], T> invokerFactory;
 	private final Object lock = new Object();
diff --git a/fabric-api-base/src/testmod/java/net/fabricmc/fabric/test/base/EventTests.java b/fabric-api-base/src/testmod/java/net/fabricmc/fabric/test/base/EventTests.java
index e3e35c2e1..28b016058 100644
--- a/fabric-api-base/src/testmod/java/net/fabricmc/fabric/test/base/EventTests.java
+++ b/fabric-api-base/src/testmod/java/net/fabricmc/fabric/test/base/EventTests.java
@@ -22,8 +22,8 @@ import java.util.Objects;
 import java.util.function.Consumer;
 import java.util.function.Function;
 
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import net.minecraft.util.Identifier;
 
@@ -32,7 +32,7 @@ import net.fabricmc.fabric.api.event.EventFactory;
 import net.fabricmc.fabric.impl.base.event.PhaseSorting;
 
 public class EventTests {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-api-base");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-api-base");
 
 	public static void run() {
 		long time1 = System.currentTimeMillis();
diff --git a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/api/lookup/v1/custom/ApiLookupMap.java b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/api/lookup/v1/custom/ApiLookupMap.java
index c8d155dec..81347dbdf 100644
--- a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/api/lookup/v1/custom/ApiLookupMap.java
+++ b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/api/lookup/v1/custom/ApiLookupMap.java
@@ -84,7 +84,7 @@ import net.fabricmc.fabric.impl.lookup.custom.ApiLookupMapImpl;
  *         // Register the provider, or warn if it is already registered
  *         if (providerMap.putIfAbsent(item, provider) != null) {
  *             // Emit a warning printing the item ID to help users debug more easily.
- *             LogManager.getLogger("The name of your mod").warn("Encountered duplicate API provider registration for item " + Registry.ITEM.getId(item) + ".");
+ *             LoggerFactory.getLogger("The name of your mod").warn("Encountered duplicate API provider registration for item " + Registry.ITEM.getId(item) + ".");
  *         }
  *     }
  * }
diff --git a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/block/BlockApiLookupImpl.java b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/block/BlockApiLookupImpl.java
index b5eb6e3d0..7f936bc11 100644
--- a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/block/BlockApiLookupImpl.java
+++ b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/block/BlockApiLookupImpl.java
@@ -20,8 +20,8 @@ import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.block.Block;
@@ -39,7 +39,7 @@ import net.fabricmc.fabric.api.lookup.v1.block.BlockApiLookup;
 import net.fabricmc.fabric.mixin.lookup.BlockEntityTypeAccessor;
 
 public final class BlockApiLookupImpl<A, C> implements BlockApiLookup<A, C> {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-api-lookup-api-v1/block");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-api-lookup-api-v1/block");
 	private static final ApiLookupMap<BlockApiLookup<?, ?>> LOOKUPS = ApiLookupMap.create(BlockApiLookupImpl::new);
 
 	@SuppressWarnings("unchecked")
diff --git a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/entity/EntityApiLookupImpl.java b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/entity/EntityApiLookupImpl.java
index c953d13bf..ddebc88f5 100644
--- a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/entity/EntityApiLookupImpl.java
+++ b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/entity/EntityApiLookupImpl.java
@@ -25,8 +25,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.entity.Entity;
@@ -41,7 +41,7 @@ import net.fabricmc.fabric.api.lookup.v1.custom.ApiProviderMap;
 import net.fabricmc.fabric.api.lookup.v1.entity.EntityApiLookup;
 
 public class EntityApiLookupImpl<A, C> implements EntityApiLookup<A, C> {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-api-lookup-api-v1/entity");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-api-lookup-api-v1/entity");
 	private static final ApiLookupMap<EntityApiLookup<?, ?>> LOOKUPS = ApiLookupMap.create(EntityApiLookupImpl::new);
 	private static final Map<Class<?>, Set<EntityType<?>>> REGISTERED_SELVES = new HashMap<>();
 	private static boolean checkEntityLookup = true;
diff --git a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/item/ItemApiLookupImpl.java b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/item/ItemApiLookupImpl.java
index e951bbb6a..2f65cfcb0 100644
--- a/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/item/ItemApiLookupImpl.java
+++ b/fabric-api-lookup-api-v1/src/main/java/net/fabricmc/fabric/impl/lookup/item/ItemApiLookupImpl.java
@@ -20,8 +20,8 @@ import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.item.Item;
@@ -35,7 +35,7 @@ import net.fabricmc.fabric.api.lookup.v1.custom.ApiProviderMap;
 import net.fabricmc.fabric.api.lookup.v1.item.ItemApiLookup;
 
 public class ItemApiLookupImpl<A, C> implements ItemApiLookup<A, C> {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-api-lookup-api-v1/item");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-api-lookup-api-v1/item");
 	private static final ApiLookupMap<ItemApiLookup<?, ?>> LOOKUPS = ApiLookupMap.create(ItemApiLookupImpl::new);
 
 	@SuppressWarnings("unchecked")
diff --git a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationImpl.java b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationImpl.java
index 909585f10..f4df12950 100644
--- a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationImpl.java
+++ b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationImpl.java
@@ -26,8 +26,8 @@ import java.util.function.Consumer;
 import java.util.function.Predicate;
 
 import com.google.common.base.Stopwatch;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.ApiStatus;
 import org.jetbrains.annotations.TestOnly;
 
@@ -46,7 +46,7 @@ import net.fabricmc.fabric.api.biome.v1.ModificationPhase;
 
 @ApiStatus.Internal
 public class BiomeModificationImpl {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(BiomeModificationImpl.class);
 
 	private static final Comparator<ModifierRecord> MODIFIER_ORDER_COMPARATOR = Comparator.<ModifierRecord>comparingInt(r -> r.phase.ordinal()).thenComparingInt(r -> r.order).thenComparing(r -> r.id);
 
diff --git a/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/impl/command/client/ClientCommandInternals.java b/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/impl/command/client/ClientCommandInternals.java
index 0752333d8..86492b0d3 100644
--- a/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/impl/command/client/ClientCommandInternals.java
+++ b/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/impl/command/client/ClientCommandInternals.java
@@ -37,9 +37,8 @@ import com.mojang.brigadier.exceptions.BuiltInExceptionProvider;
 import com.mojang.brigadier.exceptions.CommandExceptionType;
 import com.mojang.brigadier.exceptions.CommandSyntaxException;
 import com.mojang.brigadier.tree.CommandNode;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.command.CommandException;
@@ -55,7 +54,7 @@ import net.fabricmc.fabric.mixin.command.HelpCommandAccessor;
 
 @Environment(EnvType.CLIENT)
 public final class ClientCommandInternals {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(ClientCommandInternals.class);
 	private static final char PREFIX = '/';
 	private static final String API_COMMAND_NAME = "fabric-command-api-v1:client";
 	private static final String SHORT_API_COMMAND_NAME = "fcc";
@@ -91,12 +90,13 @@ public final class ClientCommandInternals {
 			return true;
 		} catch (CommandSyntaxException e) {
 			boolean ignored = isIgnoredException(e.getType());
-			LOGGER.log(ignored ? Level.DEBUG : Level.WARN, "Syntax exception for client-sided command '{}'", message, e);
 
 			if (ignored) {
+				LOGGER.debug("Syntax exception for client-sided command '{}'", message, e);
 				return false;
 			}
 
+			LOGGER.warn("Syntax exception for client-sided command '{}'", message, e);
 			commandSource.sendError(getErrorMessage(e));
 			return true;
 		} catch (CommandException e) {
diff --git a/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java b/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java
index 64673c73d..ed5b7619d 100644
--- a/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java
+++ b/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java
@@ -23,8 +23,8 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
 import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
 import com.mojang.brigadier.tree.CommandNode;
 import com.mojang.brigadier.tree.RootCommandNode;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.server.command.ServerCommandSource;
 import net.minecraft.text.LiteralText;
@@ -34,7 +34,7 @@ import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
 
 public final class CommandTest implements ModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger(CommandTest.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(CommandTest.class);
 	private static final SimpleCommandExceptionType WRONG_SIDE_SHOULD_BE_INTEGRATED = new SimpleCommandExceptionType(new LiteralText("This command was registered incorrectly. Should only be present on an integrated server but was ran on a dedicated server!"));
 	private static final SimpleCommandExceptionType WRONG_SIDE_SHOULD_BE_DEDICATED = new SimpleCommandExceptionType(new LiteralText("This command was registered incorrectly. Should only be present on an dedicated server but was ran on an integrated server!"));
 
diff --git a/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/client/ClientCommandTest.java b/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/client/ClientCommandTest.java
index fdbd11b55..afffd2863 100644
--- a/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/client/ClientCommandTest.java
+++ b/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/client/ClientCommandTest.java
@@ -21,8 +21,8 @@ import com.mojang.brigadier.exceptions.DynamicCommandExceptionType;
 import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
 import com.mojang.brigadier.tree.CommandNode;
 import com.mojang.brigadier.tree.RootCommandNode;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.network.ClientCommandSource;
@@ -38,7 +38,7 @@ import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
 
 @Environment(EnvType.CLIENT)
 public final class ClientCommandTest implements ClientModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(ClientCommandTest.class);
 	private static final DynamicCommandExceptionType IS_NULL = new DynamicCommandExceptionType(x -> new LiteralText("The " + x + " is null"));
 	private static final SimpleCommandExceptionType UNEXECUTABLE_EXECUTED = new SimpleCommandExceptionType(new LiteralText("Executed an unexecutable command!"));
 
diff --git a/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/client/container/ScreenProviderRegistryImpl.java b/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/client/container/ScreenProviderRegistryImpl.java
index 36e5d0091..418956900 100644
--- a/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/client/container/ScreenProviderRegistryImpl.java
+++ b/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/client/container/ScreenProviderRegistryImpl.java
@@ -19,8 +19,8 @@ package net.fabricmc.fabric.impl.client.container;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.client.network.ClientPlayerEntity;
 import net.minecraft.util.Identifier;
@@ -35,7 +35,7 @@ import net.fabricmc.fabric.api.container.ContainerProviderRegistry;
 import net.fabricmc.fabric.impl.container.ContainerProviderImpl;
 
 public class ScreenProviderRegistryImpl implements ScreenProviderRegistry {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(ScreenProviderRegistryImpl.class);
 
 	private static final Map<Identifier, ContainerFactory<HandledScreen>> FACTORIES = new HashMap<>();
 
diff --git a/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/container/ContainerProviderImpl.java b/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/container/ContainerProviderImpl.java
index 7c7dc583e..c297ec9c0 100644
--- a/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/container/ContainerProviderImpl.java
+++ b/fabric-containers-v0/src/main/java/net/fabricmc/fabric/impl/container/ContainerProviderImpl.java
@@ -21,8 +21,8 @@ import java.util.Map;
 import java.util.function.Consumer;
 
 import io.netty.buffer.Unpooled;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
 import net.minecraft.screen.ScreenHandler;
@@ -38,7 +38,7 @@ import net.fabricmc.fabric.mixin.container.ServerPlayerEntityAccessor;
 public class ContainerProviderImpl implements ContainerProviderRegistry {
 	public static final Identifier OPEN_CONTAINER = new Identifier("fabric", "container/open");
 
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(ContainerProviderImpl.class);
 
 	private static final Map<Identifier, ContainerFactory<ScreenHandler>> FACTORIES = new HashMap<>();
 
diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/FlattenableBlockRegistry.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/FlattenableBlockRegistry.java
index 99ffd555c..a95881912 100644
--- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/FlattenableBlockRegistry.java
+++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/FlattenableBlockRegistry.java
@@ -18,8 +18,8 @@ package net.fabricmc.fabric.api.registry;
 
 import java.util.Objects;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Block;
 import net.minecraft.block.BlockState;
@@ -30,7 +30,7 @@ import net.fabricmc.fabric.mixin.content.registry.ShovelItemAccessor;
  * A registry for shovel flattening interactions. A vanilla example is turning dirt to dirt paths.
  */
 public final class FlattenableBlockRegistry {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(FlattenableBlockRegistry.class);
 
 	private FlattenableBlockRegistry() {
 	}
diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/StrippableBlockRegistry.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/StrippableBlockRegistry.java
index 3b70dbc93..ed4ea6aac 100644
--- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/StrippableBlockRegistry.java
+++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/StrippableBlockRegistry.java
@@ -20,8 +20,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Block;
 import net.minecraft.state.property.Properties;
@@ -32,7 +32,7 @@ import net.fabricmc.fabric.mixin.content.registry.AxeItemAccessor;
  * A registry for axe stripping interactions. A vanilla example is turning logs to stripped logs.
  */
 public final class StrippableBlockRegistry {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(StrippableBlockRegistry.class);
 
 	private StrippableBlockRegistry() {
 	}
diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/FuelRegistryImpl.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/FuelRegistryImpl.java
index 999d5764a..0f21f64a7 100644
--- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/FuelRegistryImpl.java
+++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/FuelRegistryImpl.java
@@ -21,8 +21,8 @@ import java.util.Map;
 
 import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.entity.AbstractFurnaceBlockEntity;
 import net.minecraft.item.Item;
@@ -34,7 +34,7 @@ import net.fabricmc.fabric.api.registry.FuelRegistry;
 
 // TODO: Clamp values to 32767 (+ add hook for mods which extend the limit to disable the check?)
 public final class FuelRegistryImpl implements FuelRegistry {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(FuelRegistryImpl.class);
 	private final Object2IntMap<ItemConvertible> itemCookTimes = new Object2IntLinkedOpenHashMap<>();
 	private final Object2IntMap<Tag<Item>> tagCookTimes = new Object2IntLinkedOpenHashMap<>();
 	private volatile Map<Item, Integer> fuelTimeCache = null; // thread safe via copy-on-write mechanism
diff --git a/fabric-content-registries-v0/src/testmod/java/net/fabricmc/fabric/test/content/registry/ContentRegistryTest.java b/fabric-content-registries-v0/src/testmod/java/net/fabricmc/fabric/test/content/registry/ContentRegistryTest.java
index 051e6ed8a..d492963ee 100644
--- a/fabric-content-registries-v0/src/testmod/java/net/fabricmc/fabric/test/content/registry/ContentRegistryTest.java
+++ b/fabric-content-registries-v0/src/testmod/java/net/fabricmc/fabric/test/content/registry/ContentRegistryTest.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.test.content.registry;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Blocks;
 import net.minecraft.item.HoeItem;
@@ -29,7 +29,7 @@ import net.fabricmc.fabric.api.registry.StrippableBlockRegistry;
 import net.fabricmc.fabric.api.registry.TillableBlockRegistry;
 
 public final class ContentRegistryTest implements ModInitializer {
-	public static final Logger LOGGER = LogManager.getLogger();
+	public static final Logger LOGGER = LoggerFactory.getLogger(ContentRegistryTest.class);
 
 	@Override
 	public void onInitialize() {
diff --git a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/impl/datagen/FabricDataGenHelper.java b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/impl/datagen/FabricDataGenHelper.java
index e2ed0934e..fce3b560f 100644
--- a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/impl/datagen/FabricDataGenHelper.java
+++ b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/impl/datagen/FabricDataGenHelper.java
@@ -26,8 +26,8 @@ import java.util.Objects;
 
 import com.mojang.serialization.Lifecycle;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.ApiStatus;
 import org.jetbrains.annotations.Nullable;
 
@@ -46,7 +46,7 @@ import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
 
 @ApiStatus.Internal
 public final class FabricDataGenHelper {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(FabricDataGenHelper.class);
 
 	/**
 	 * When enabled the dedicated server startup will be hijacked to run the data generators and then quit.
diff --git a/fabric-entity-events-v1/src/testmod/java/net/fabricmc/fabric/test/entity/event/EntityEventTests.java b/fabric-entity-events-v1/src/testmod/java/net/fabricmc/fabric/test/entity/event/EntityEventTests.java
index 570875195..f88af8c7f 100644
--- a/fabric-entity-events-v1/src/testmod/java/net/fabricmc/fabric/test/entity/event/EntityEventTests.java
+++ b/fabric-entity-events-v1/src/testmod/java/net/fabricmc/fabric/test/entity/event/EntityEventTests.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.test.entity.event;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.AbstractBlock;
 import net.minecraft.block.Block;
@@ -48,7 +48,7 @@ import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;
 import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents;
 
 public final class EntityEventTests implements ModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger(EntityEventTests.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(EntityEventTests.class);
 	public static final Block TEST_BED = new TestBedBlock(AbstractBlock.Settings.of(Material.WOOL).strength(1, 1));
 	public static final Item DIAMOND_ELYTRA = new DiamondElytraItem();
 
diff --git a/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/AttackBlockTests.java b/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/AttackBlockTests.java
index eefd273a9..ea4759f1d 100644
--- a/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/AttackBlockTests.java
+++ b/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/AttackBlockTests.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.test.event.interaction;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Blocks;
 import net.minecraft.item.Items;
@@ -27,7 +27,7 @@ import net.fabricmc.api.ModInitializer;
 import net.fabricmc.fabric.api.event.player.AttackBlockCallback;
 
 public class AttackBlockTests implements ModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(AttackBlockTests.class);
 
 	@Override
 	public void onInitialize() {
diff --git a/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/PlayerBreakBlockTests.java b/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/PlayerBreakBlockTests.java
index 402cadc2a..0942614b6 100644
--- a/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/PlayerBreakBlockTests.java
+++ b/fabric-events-interaction-v0/src/testmod/java/net/fabricmc/fabric/test/event/interaction/PlayerBreakBlockTests.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.test.event.interaction;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Blocks;
 
@@ -25,7 +25,7 @@ import net.fabricmc.api.ModInitializer;
 import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
 
 public class PlayerBreakBlockTests implements ModInitializer {
-	public static final Logger LOGGER = LogManager.getLogger("InteractionEventsTest");
+	public static final Logger LOGGER = LoggerFactory.getLogger("InteractionEventsTest");
 
 	@Override
 	public void onInitialize() {
diff --git a/fabric-events-lifecycle-v0/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/legacy/LegacyLifecycleEventsTest.java b/fabric-events-lifecycle-v0/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/legacy/LegacyLifecycleEventsTest.java
index 7d3091d56..7e331e2b9 100644
--- a/fabric-events-lifecycle-v0/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/legacy/LegacyLifecycleEventsTest.java
+++ b/fabric-events-lifecycle-v0/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/legacy/LegacyLifecycleEventsTest.java
@@ -19,8 +19,8 @@ package net.fabricmc.fabric.test.event.lifecycle.legacy;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.registry.RegistryKey;
 import net.minecraft.world.World;
@@ -32,7 +32,7 @@ import net.fabricmc.fabric.api.event.server.ServerTickCallback;
 import net.fabricmc.fabric.api.event.world.WorldTickCallback;
 
 public class LegacyLifecycleEventsTest implements ModInitializer {
-	public static final Logger LOGGER = LogManager.getLogger("LegacyLifecycleEventsTest");
+	public static final Logger LOGGER = LoggerFactory.getLogger("LegacyLifecycleEventsTest");
 	private Map<RegistryKey<World>, Integer> tickTracker = new HashMap<>();
 
 	@Override
diff --git a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/DoubleRule.java b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/DoubleRule.java
index 223265c8c..8890715ec 100644
--- a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/DoubleRule.java
+++ b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/DoubleRule.java
@@ -17,8 +17,8 @@
 package net.fabricmc.fabric.api.gamerule.v1.rule;
 
 import com.mojang.brigadier.context.CommandContext;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.server.MinecraftServer;
 import net.minecraft.server.command.ServerCommandSource;
@@ -27,7 +27,7 @@ import net.minecraft.world.GameRules;
 import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry;
 
 public final class DoubleRule extends GameRules.Rule<DoubleRule> implements ValidateableRule {
-	private static final Logger LOGGER = LogManager.getLogger(GameRuleRegistry.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(GameRuleRegistry.class);
 
 	private final double minimumValue;
 	private final double maximumValue;
diff --git a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/EnumRule.java b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/EnumRule.java
index 1cb64438b..76d700c88 100644
--- a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/EnumRule.java
+++ b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/api/gamerule/v1/rule/EnumRule.java
@@ -24,8 +24,8 @@ import java.util.Collection;
 import java.util.List;
 
 import com.mojang.brigadier.context.CommandContext;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.server.MinecraftServer;
@@ -35,7 +35,7 @@ import net.minecraft.world.GameRules;
 import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry;
 
 public final class EnumRule<E extends Enum<E>> extends GameRules.Rule<EnumRule<E>> {
-	private static final Logger LOGGER = LogManager.getLogger(GameRuleRegistry.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(GameRuleRegistry.class);
 
 	private final Class<E> classType;
 	private final List<E> supportedValues;
diff --git a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/impl/gamerule/rule/BoundedIntRule.java b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/impl/gamerule/rule/BoundedIntRule.java
index 95d9b14d4..af232332c 100644
--- a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/impl/gamerule/rule/BoundedIntRule.java
+++ b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/impl/gamerule/rule/BoundedIntRule.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.impl.gamerule.rule;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.world.GameRules;
 
@@ -27,7 +27,7 @@ import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry;
 import net.fabricmc.fabric.mixin.gamerule.IntRuleAccessor;
 
 public final class BoundedIntRule extends GameRules.IntRule {
-	private static final Logger LOGGER = LogManager.getLogger(GameRuleRegistry.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(GameRuleRegistry.class);
 
 	private final int minimumValue;
 	private final int maximumValue;
diff --git a/fabric-game-rule-api-v1/src/testmod/java/net/fabricmc/fabric/test/gamerule/GameRulesTestMod.java b/fabric-game-rule-api-v1/src/testmod/java/net/fabricmc/fabric/test/gamerule/GameRulesTestMod.java
index 822bbd0f9..84acb56ea 100644
--- a/fabric-game-rule-api-v1/src/testmod/java/net/fabricmc/fabric/test/gamerule/GameRulesTestMod.java
+++ b/fabric-game-rule-api-v1/src/testmod/java/net/fabricmc/fabric/test/gamerule/GameRulesTestMod.java
@@ -22,8 +22,8 @@ import java.util.Collection;
 import com.mojang.brigadier.tree.CommandNode;
 import com.mojang.brigadier.tree.LiteralCommandNode;
 import com.mojang.brigadier.tree.RootCommandNode;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.entity.player.PlayerEntity;
 import net.minecraft.server.command.ServerCommandSource;
@@ -42,7 +42,7 @@ import net.fabricmc.fabric.api.gamerule.v1.rule.DoubleRule;
 import net.fabricmc.fabric.api.gamerule.v1.rule.EnumRule;
 
 public class GameRulesTestMod implements ModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger(GameRulesTestMod.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(GameRulesTestMod.class);
 	private static final Direction[] CARDINAL_DIRECTIONS = Arrays.stream(Direction.values()).filter(direction -> direction != Direction.UP && direction != Direction.DOWN).toArray(Direction[]::new);
 	public static final CustomGameRuleCategory GREEN_CATEGORY = new CustomGameRuleCategory(new Identifier("fabric", "green"), new LiteralText("This One is Green").styled(style -> style.withBold(true).withColor(Formatting.DARK_GREEN)));
 	public static final CustomGameRuleCategory RED_CATEGORY = new CustomGameRuleCategory(new Identifier("fabric", "red"), new LiteralText("This One is Red").styled(style -> style.withBold(true).withColor(Formatting.DARK_RED)));
diff --git a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestHelper.java b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestHelper.java
index be2cbbe39..ebe8a6ada 100644
--- a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestHelper.java
+++ b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestHelper.java
@@ -25,8 +25,8 @@ import java.util.function.Consumer;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.resource.ResourcePackManager;
 import net.minecraft.resource.ServerResourceManager;
@@ -48,7 +48,7 @@ import net.fabricmc.fabric.api.gametest.v1.FabricGameTest;
 public final class FabricGameTestHelper {
 	public static final boolean ENABLED = System.getProperty("fabric-api.gametest") != null;
 
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(FabricGameTestHelper.class);
 
 	private FabricGameTestHelper() {
 	}
diff --git a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestModInitializer.java b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestModInitializer.java
index 9ad570913..65bdaaef9 100644
--- a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestModInitializer.java
+++ b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/impl/gametest/FabricGameTestModInitializer.java
@@ -20,8 +20,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.ApiStatus;
 
 import net.minecraft.test.TestFunctions;
@@ -34,7 +34,7 @@ import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
 public final class FabricGameTestModInitializer implements ModInitializer {
 	private static final String ENTRYPOINT_KEY = "fabric-gametest";
 	private static final Map<Class<?>, String> GAME_TEST_IDS = new HashMap<>();
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(FabricGameTestModInitializer.class);
 
 	@Override
 	public void onInitialize() {
diff --git a/fabric-key-binding-api-v1/src/main/java/net/fabricmc/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java b/fabric-key-binding-api-v1/src/main/java/net/fabricmc/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java
index 92ff3f26c..55b37f5c2 100644
--- a/fabric-key-binding-api-v1/src/main/java/net/fabricmc/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java
+++ b/fabric-key-binding-api-v1/src/main/java/net/fabricmc/fabric/impl/client/keybinding/KeyBindingRegistryImpl.java
@@ -22,16 +22,12 @@ import java.util.Optional;
 
 import com.google.common.collect.Lists;
 import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 import net.minecraft.client.option.KeyBinding;
 
 import net.fabricmc.fabric.mixin.client.keybinding.KeyBindingAccessor;
 
 public final class KeyBindingRegistryImpl {
-	private static final Logger LOGGER = LogManager.getLogger();
-
 	private static final List<KeyBinding> moddedKeyBindings = new ReferenceArrayList<>(); // ArrayList with identity based comparisons for contains/remove/indexOf etc., required for correctly handling duplicate keybinds
 
 	private KeyBindingRegistryImpl() {
diff --git a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerBlockEntityLifecycleTests.java b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerBlockEntityLifecycleTests.java
index 431ba778e..8d829c29a 100644
--- a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerBlockEntityLifecycleTests.java
+++ b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerBlockEntityLifecycleTests.java
@@ -19,7 +19,7 @@ package net.fabricmc.fabric.test.event.lifecycle;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.logging.log4j.Logger;
+import org.slf4j.Logger;
 
 import net.minecraft.block.entity.BlockEntity;
 import net.minecraft.server.world.ServerWorld;
diff --git a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerEntityLifecycleTests.java b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerEntityLifecycleTests.java
index 65050a93a..a0750880f 100644
--- a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerEntityLifecycleTests.java
+++ b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerEntityLifecycleTests.java
@@ -20,7 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.google.common.collect.Iterables;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.Logger;
 
 import net.minecraft.entity.Entity;
 import net.minecraft.server.world.ServerWorld;
diff --git a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerLifecycleTests.java b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerLifecycleTests.java
index 3440928dd..9ddf5e644 100644
--- a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerLifecycleTests.java
+++ b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerLifecycleTests.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.test.event.lifecycle;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.fabricmc.api.ModInitializer;
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
@@ -27,7 +27,7 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
  * Tests related to the lifecycle of a server.
  */
 public final class ServerLifecycleTests implements ModInitializer {
-	public static final Logger LOGGER = LogManager.getLogger("LifecycleEventsTest");
+	public static final Logger LOGGER = LoggerFactory.getLogger("LifecycleEventsTest");
 
 	@Override
 	public void onInitialize() {
diff --git a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerResourceReloadTests.java b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerResourceReloadTests.java
index 149b10d9d..262720e74 100644
--- a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerResourceReloadTests.java
+++ b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/ServerResourceReloadTests.java
@@ -16,14 +16,14 @@
 
 package net.fabricmc.fabric.test.event.lifecycle;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.fabricmc.api.ModInitializer;
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
 
 public final class ServerResourceReloadTests implements ModInitializer {
-	public static final Logger LOGGER = LogManager.getLogger("LifecycleEventsTest");
+	public static final Logger LOGGER = LoggerFactory.getLogger("LifecycleEventsTest");
 
 	@Override
 	public void onInitialize() {
diff --git a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientBlockEntityLifecycleTests.java b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientBlockEntityLifecycleTests.java
index 99e2f09ac..725bedce3 100644
--- a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientBlockEntityLifecycleTests.java
+++ b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientBlockEntityLifecycleTests.java
@@ -19,7 +19,7 @@ package net.fabricmc.fabric.test.event.lifecycle.client;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.logging.log4j.Logger;
+import org.slf4j.Logger;
 
 import net.minecraft.block.entity.BlockEntity;
 import net.minecraft.util.registry.Registry;
diff --git a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientEntityLifecycleTests.java b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientEntityLifecycleTests.java
index b5c850fb4..764feb2d9 100644
--- a/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientEntityLifecycleTests.java
+++ b/fabric-lifecycle-events-v1/src/testmod/java/net/fabricmc/fabric/test/event/lifecycle/client/ClientEntityLifecycleTests.java
@@ -20,7 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.google.common.collect.Iterables;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.Logger;
 
 import net.minecraft.entity.Entity;
 import net.minecraft.util.registry.Registry;
diff --git a/fabric-loot-tables-v1/src/testmod/java/net/fabricmc/fabric/test/loot/LootTest.java b/fabric-loot-tables-v1/src/testmod/java/net/fabricmc/fabric/test/loot/LootTest.java
index 76c6cde18..945f43f1b 100644
--- a/fabric-loot-tables-v1/src/testmod/java/net/fabricmc/fabric/test/loot/LootTest.java
+++ b/fabric-loot-tables-v1/src/testmod/java/net/fabricmc/fabric/test/loot/LootTest.java
@@ -20,8 +20,8 @@ import com.google.gson.Gson;
 import com.google.gson.JsonDeserializationContext;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonSerializationContext;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.item.Items;
 import net.minecraft.loot.provider.number.ConstantLootNumberProvider;
@@ -41,7 +41,7 @@ import net.fabricmc.fabric.api.loot.v1.LootEntryTypeRegistry;
 import net.fabricmc.fabric.api.loot.v1.event.LootTableLoadingCallback;
 
 public class LootTest implements ModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(LootTest.class);
 
 	private static final Gson LOOT_GSON = LootGsons.getTableGsonBuilder().create();
 	private static final String LOOT_ENTRY_JSON = "{\"type\":\"minecraft:item\",\"name\":\"minecraft:apple\"}";
diff --git a/fabric-mining-level-api-v1/src/main/java/net/fabricmc/fabric/impl/mininglevel/MiningLevelManagerImpl.java b/fabric-mining-level-api-v1/src/main/java/net/fabricmc/fabric/impl/mininglevel/MiningLevelManagerImpl.java
index 01842686d..d0b2105b9 100644
--- a/fabric-mining-level-api-v1/src/main/java/net/fabricmc/fabric/impl/mininglevel/MiningLevelManagerImpl.java
+++ b/fabric-mining-level-api-v1/src/main/java/net/fabricmc/fabric/impl/mininglevel/MiningLevelManagerImpl.java
@@ -21,8 +21,8 @@ import java.util.regex.Pattern;
 
 import it.unimi.dsi.fastutil.objects.Reference2IntMap;
 import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Block;
 import net.minecraft.block.BlockState;
@@ -33,7 +33,7 @@ import net.minecraft.util.Identifier;
 import net.fabricmc.yarn.constants.MiningLevels;
 
 public final class MiningLevelManagerImpl {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-mining-level-api-v1/MiningLevelManagerImpl");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-mining-level-api-v1/MiningLevelManagerImpl");
 	private static final String TOOL_TAG_NAMESPACE = "fabric";
 	private static final Pattern TOOL_TAG_PATTERN = Pattern.compile("^needs_tool_level_([0-9]+)$");
 
diff --git a/fabric-mining-level-api-v1/src/testmod/java/net/fabricmc/fabric/test/mininglevel/MiningLevelTest.java b/fabric-mining-level-api-v1/src/testmod/java/net/fabricmc/fabric/test/mininglevel/MiningLevelTest.java
index 3a7e3c681..8157d36a3 100644
--- a/fabric-mining-level-api-v1/src/testmod/java/net/fabricmc/fabric/test/mininglevel/MiningLevelTest.java
+++ b/fabric-mining-level-api-v1/src/testmod/java/net/fabricmc/fabric/test/mininglevel/MiningLevelTest.java
@@ -19,8 +19,8 @@ package net.fabricmc.fabric.test.mininglevel;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.AbstractBlock;
 import net.minecraft.block.Block;
@@ -43,7 +43,7 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
 // not working on its own.
 public final class MiningLevelTest implements ModInitializer {
 	private static final String ID = "fabric-mining-level-api-v1-testmod";
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(MiningLevelTest.class);
 
 	/// Tagged blocks
 	// sword + dynamic mining level tag
diff --git a/fabric-models-v0/src/main/java/net/fabricmc/fabric/impl/client/model/ModelLoadingRegistryImpl.java b/fabric-models-v0/src/main/java/net/fabricmc/fabric/impl/client/model/ModelLoadingRegistryImpl.java
index 4d55fc4cc..4c58d8da9 100644
--- a/fabric-models-v0/src/main/java/net/fabricmc/fabric/impl/client/model/ModelLoadingRegistryImpl.java
+++ b/fabric-models-v0/src/main/java/net/fabricmc/fabric/impl/client/model/ModelLoadingRegistryImpl.java
@@ -25,8 +25,8 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import com.google.common.collect.Lists;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.client.render.model.ModelLoader;
@@ -95,7 +95,7 @@ public class ModelLoadingRegistryImpl implements ModelLoadingRegistry {
 							return model;
 						}
 					} catch (ModelProviderException e) {
-						logger.error(e);
+						logger.error("Failed to load custom model", e);
 						return null;
 					}
 				}
@@ -122,7 +122,7 @@ public class ModelLoadingRegistryImpl implements ModelLoadingRegistry {
 						}
 					}
 				} catch (ModelProviderException e) {
-					logger.error(e);
+					logger.error("Failed to load custom model", e);
 					return null;
 				}
 			}
@@ -177,7 +177,7 @@ public class ModelLoadingRegistryImpl implements ModelLoadingRegistry {
 		}
 	}
 
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(ModelLoadingRegistryImpl.class);
 
 	private final List<Function<ResourceManager, ModelVariantProvider>> variantProviderSuppliers = new ArrayList<>();
 	private final List<Function<ResourceManager, ModelResourceProvider>> resourceProviderSuppliers = new ArrayList<>();
diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/AbstractNetworkAddon.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/AbstractNetworkAddon.java
index 16ca10e75..cc03905fc 100644
--- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/AbstractNetworkAddon.java
+++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/AbstractNetworkAddon.java
@@ -26,8 +26,8 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.util.Identifier;
@@ -49,7 +49,7 @@ public abstract class AbstractNetworkAddon<H> {
 
 	protected AbstractNetworkAddon(GlobalReceiverRegistry<H> receiver, String description) {
 		this.receiver = receiver;
-		this.logger = LogManager.getLogger(description);
+		this.logger = LoggerFactory.getLogger(description);
 	}
 
 	@Nullable
diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/NetworkingImpl.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/NetworkingImpl.java
index 37d6d017a..20257607c 100644
--- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/NetworkingImpl.java
+++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/NetworkingImpl.java
@@ -20,8 +20,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.network.PacketByteBuf;
 import net.minecraft.util.Identifier;
@@ -33,7 +33,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
 
 public final class NetworkingImpl {
 	public static final String MOD_ID = "fabric-networking-api-v1";
-	public static final Logger LOGGER = LogManager.getLogger(MOD_ID);
+	public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
 	/**
 	 * Id of packet used to register supported channels.
 	 */
diff --git a/fabric-networking-api-v1/src/testmod/java/net/fabricmc/fabric/test/networking/NetworkingTestmods.java b/fabric-networking-api-v1/src/testmod/java/net/fabricmc/fabric/test/networking/NetworkingTestmods.java
index d834b62e0..7d45709ce 100644
--- a/fabric-networking-api-v1/src/testmod/java/net/fabricmc/fabric/test/networking/NetworkingTestmods.java
+++ b/fabric-networking-api-v1/src/testmod/java/net/fabricmc/fabric/test/networking/NetworkingTestmods.java
@@ -16,14 +16,14 @@
 
 package net.fabricmc.fabric.test.networking;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.Identifier;
 
 public final class NetworkingTestmods {
 	public static final String ID = "fabric-networking-api-v1-testmod";
-	public static final Logger LOGGER = LogManager.getLogger(ID);
+	public static final Logger LOGGER = LoggerFactory.getLogger(ID);
 
 	public static Identifier id(String name) {
 		return new Identifier(ID, name);
diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricDefaultAttributeRegistry.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricDefaultAttributeRegistry.java
index 0fca1154f..69a9f795d 100644
--- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricDefaultAttributeRegistry.java
+++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricDefaultAttributeRegistry.java
@@ -18,8 +18,8 @@ package net.fabricmc.fabric.api.object.builder.v1.entity;
 
 import java.util.function.Supplier;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.entity.EntityType;
 import net.minecraft.entity.LivingEntity;
@@ -43,7 +43,7 @@ public final class FabricDefaultAttributeRegistry {
 	/**
 	 * Private logger, not exposed.
 	 */
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(FabricDefaultAttributeRegistry.class);
 
 	/**
 	 * Registers a default attribute for a type of living entity.
diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java
index ec29eb4e8..23abe5b7f 100644
--- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java
+++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/FabricEntityTypeBuilder.java
@@ -20,8 +20,6 @@ import java.util.Objects;
 import java.util.function.Supplier;
 
 import com.google.common.collect.ImmutableSet;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.LivingEntity;
@@ -45,7 +43,6 @@ import net.fabricmc.fabric.mixin.object.builder.SpawnRestrictionAccessor;
  * @param <T> Entity class.
  */
 public class FabricEntityTypeBuilder<T extends Entity> {
-	private static final Logger LOGGER = LogManager.getLogger();
 	private SpawnGroup spawnGroup;
 	private EntityType.EntityFactory<T> factory;
 	private boolean saveable = true;
diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/MinecartComparatorLogicRegistry.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/MinecartComparatorLogicRegistry.java
index 118123321..2a86bacb6 100644
--- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/MinecartComparatorLogicRegistry.java
+++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/entity/MinecartComparatorLogicRegistry.java
@@ -19,8 +19,8 @@ package net.fabricmc.fabric.api.object.builder.v1.entity;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.entity.EntityType;
@@ -31,7 +31,7 @@ import net.minecraft.util.registry.Registry;
  * A registry for {@linkplain MinecartComparatorLogic custom minecart compator logic}.
  */
 public final class MinecartComparatorLogicRegistry {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(MinecartComparatorLogicRegistry.class);
 	private static final Map<EntityType<?>, MinecartComparatorLogic<?>> logics = new HashMap<>();
 
 	/**
diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/villager/VillagerTypeHelper.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/villager/VillagerTypeHelper.java
index 923ac2d92..8ca6ee520 100644
--- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/villager/VillagerTypeHelper.java
+++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/villager/VillagerTypeHelper.java
@@ -18,8 +18,8 @@ package net.fabricmc.fabric.api.object.builder.v1.villager;
 
 import java.util.Objects;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.Identifier;
 import net.minecraft.util.registry.RegistryKey;
@@ -42,7 +42,7 @@ import net.fabricmc.fabric.mixin.object.builder.VillagerTypeAccessor;
  * <p>The texture used for the appearance of the villager is located at {@code assets/IDENTIFIER_NAMESPACE/textures/entity/villager/type/IDENTIFIER_PATH.png}.
  */
 public final class VillagerTypeHelper {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(VillagerTypeHelper.class);
 
 	/**
 	 * Creates and registers a new villager type.
diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/impl/object/builder/TradeOfferInternals.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/impl/object/builder/TradeOfferInternals.java
index 0e11a0b90..abfc40195 100644
--- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/impl/object/builder/TradeOfferInternals.java
+++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/impl/object/builder/TradeOfferInternals.java
@@ -24,14 +24,14 @@ import java.util.function.Consumer;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.village.TradeOffers;
 import net.minecraft.village.VillagerProfession;
 
 public final class TradeOfferInternals {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-object-builder-api-v1");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-object-builder-api-v1");
 
 	private TradeOfferInternals() {
 	}
diff --git a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/ObjectBuilderTestConstants.java b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/ObjectBuilderTestConstants.java
index 13679dfa1..fd9278397 100644
--- a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/ObjectBuilderTestConstants.java
+++ b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/ObjectBuilderTestConstants.java
@@ -16,14 +16,14 @@
 
 package net.fabricmc.fabric.test.object.builder;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.Identifier;
 
 public final class ObjectBuilderTestConstants {
 	public static final String MOD_ID = "fabric-object-builder-api-v1-testmod";
-	public static final Logger LOGGER = LogManager.getLogger(MOD_ID);
+	public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
 
 	public static Identifier id(String name) {
 		return new Identifier(MOD_ID, name);
diff --git a/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/entity/EntityTrackingRegistry.java b/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/entity/EntityTrackingRegistry.java
index cd2b18d37..45fb7231e 100644
--- a/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/entity/EntityTrackingRegistry.java
+++ b/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/entity/EntityTrackingRegistry.java
@@ -19,8 +19,8 @@ package net.fabricmc.fabric.api.entity;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.entity.EntityType;
 import net.minecraft.util.registry.Registry;
@@ -33,7 +33,7 @@ import net.minecraft.util.registry.Registry;
 @SuppressWarnings("deprecation")
 @Deprecated
 public class EntityTrackingRegistry {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(EntityTrackingRegistry.class);
 
 	@Deprecated
 	public static class Entry {
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistrySync.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistrySync.java
index a701d2917..2ddb07a0f 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistrySync.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistrySync.java
@@ -17,8 +17,8 @@
 package net.fabricmc.fabric.impl.registry.sync;
 
 import com.mojang.serialization.Lifecycle;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.registry.BuiltinRegistries;
 import net.minecraft.util.registry.DynamicRegistryManager;
@@ -34,7 +34,7 @@ import net.fabricmc.fabric.mixin.registry.sync.AccessorRegistry;
  * in case it gets classloaded early.
  */
 public class DynamicRegistrySync {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(DynamicRegistrySync.class);
 
 	/**
 	 * Sets up a synchronisation that will propagate added entries to the given dynamic registry manager, which
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/FabricRegistryClientInit.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/FabricRegistryClientInit.java
index f9939f620..17e65a592 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/FabricRegistryClientInit.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/FabricRegistryClientInit.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.impl.registry.sync;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.text.LiteralText;
 
@@ -26,7 +26,7 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
 import net.fabricmc.fabric.impl.registry.sync.packet.RegistryPacketHandler;
 
 public class FabricRegistryClientInit implements ClientModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(FabricRegistryClientInit.class);
 
 	@Override
 	public void onInitializeClient() {
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager.java
index 94af29e42..cace4ffb6 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/RegistrySyncManager.java
@@ -35,8 +35,8 @@ import it.unimi.dsi.fastutil.ints.IntSet;
 import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.nbt.NbtCompound;
@@ -61,7 +61,7 @@ public final class RegistrySyncManager {
 	public static final RegistryPacketHandler NBT_PACKET_HANDLER = new NbtRegistryPacketHandler();
 	public static final RegistryPacketHandler DIRECT_PACKET_HANDLER = new DirectRegistryPacketHandler();
 
-	private static final Logger LOGGER = LogManager.getLogger("FabricRegistrySync");
+	private static final Logger LOGGER = LoggerFactory.getLogger("FabricRegistrySync");
 	private static final boolean DEBUG_WRITE_REGISTRY_DATA = Boolean.getBoolean("fabric.registry.debug.writeContentsAsCsv");
 	private static final boolean FORCE_NBT_SYNC = Boolean.getBoolean("fabric.registry.forceNbtSync");
 
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/Int2ObjectMapTracker.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/Int2ObjectMapTracker.java
index 62ddfa4ad..3e2a58719 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/Int2ObjectMapTracker.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/Int2ObjectMapTracker.java
@@ -25,8 +25,8 @@ import com.google.common.base.Joiner;
 import it.unimi.dsi.fastutil.ints.Int2IntMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.Identifier;
 import net.minecraft.util.registry.Registry;
@@ -36,7 +36,7 @@ import net.fabricmc.fabric.api.event.registry.RegistryEntryRemovedCallback;
 import net.fabricmc.fabric.api.event.registry.RegistryIdRemapCallback;
 
 public class Int2ObjectMapTracker<V, OV> implements RegistryEntryAddedCallback<V>, RegistryIdRemapCallback<V>, RegistryEntryRemovedCallback<V> {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(Int2ObjectMapTracker.class);
 	private final String name;
 	private final Int2ObjectMap<OV> mappers;
 	private Map<Identifier, OV> removedMapperCache = new HashMap<>();
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/StateIdTracker.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/StateIdTracker.java
index 2b278e400..a74a44ca3 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/StateIdTracker.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/trackers/StateIdTracker.java
@@ -21,8 +21,8 @@ import java.util.function.Function;
 
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.collection.IdList;
 import net.minecraft.util.Identifier;
@@ -33,7 +33,7 @@ import net.fabricmc.fabric.api.event.registry.RegistryIdRemapCallback;
 import net.fabricmc.fabric.impl.registry.sync.RemovableIdList;
 
 public final class StateIdTracker<T, S> implements RegistryIdRemapCallback<T>, RegistryEntryAddedCallback<T> {
-	private final Logger logger = LogManager.getLogger();
+	private final Logger logger = LoggerFactory.getLogger(StateIdTracker.class);
 	private final Registry<T> registry;
 	private final IdList<S> stateList;
 	private final Function<T, Collection<S>> stateGetter;
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java
index 58bdc57d5..2adca5ee2 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java
@@ -31,8 +31,8 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
 import it.unimi.dsi.fastutil.objects.ObjectList;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.spongepowered.asm.mixin.Final;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.Shadow;
@@ -73,7 +73,7 @@ public abstract class MixinIdRegistry<T> extends Registry<T> implements Remappab
 	@Shadow
 	private int nextId;
 	@Unique
-	private static Logger FABRIC_LOGGER = LogManager.getLogger();
+	private static Logger FABRIC_LOGGER = LoggerFactory.getLogger(MixinIdRegistry.class);
 
 	public MixinIdRegistry(RegistryKey<? extends Registry<T>> key, Lifecycle lifecycle) {
 		super(key, lifecycle);
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java
index bc5ae4d7b..2b51adf50 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java
@@ -26,8 +26,8 @@ import java.nio.file.Path;
 import java.util.Map;
 
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.spongepowered.asm.mixin.Final;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.Shadow;
@@ -54,7 +54,7 @@ public class MixinLevelStorageSession {
 	@Unique
 	private static final int FABRIC_ID_REGISTRY_BACKUPS = 3;
 	@Unique
-	private static final Logger FABRIC_LOGGER = LogManager.getLogger("FabricRegistrySync");
+	private static final Logger FABRIC_LOGGER = LoggerFactory.getLogger("FabricRegistrySync");
 	@Unique
 	private Map<Identifier, Object2IntMap<Identifier>> fabric_lastSavedRegistryMap = null;
 	@Unique
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinSimpleRegistry.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinSimpleRegistry.java
index f16351d76..f510fb445 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinSimpleRegistry.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinSimpleRegistry.java
@@ -17,8 +17,8 @@
 package net.fabricmc.fabric.mixin.registry.sync;
 
 import com.mojang.serialization.Lifecycle;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.Unique;
 import org.spongepowered.asm.mixin.injection.At;
@@ -37,7 +37,7 @@ import net.fabricmc.fabric.api.event.registry.RegistryAttributeHolder;
 @Mixin(SimpleRegistry.class)
 public abstract class MixinSimpleRegistry<T> extends Registry<T> {
 	@Unique
-	private static final Logger FARBIC_LOGGER = LogManager.getLogger("FabricRegistrySync");
+	private static final Logger FARBIC_LOGGER = LoggerFactory.getLogger("FabricRegistrySync");
 
 	protected MixinSimpleRegistry(RegistryKey<Registry<T>> arg, Lifecycle lifecycle) {
 		super(arg, lifecycle);
diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/client/MixinMinecraftClient.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/client/MixinMinecraftClient.java
index f6cf7c241..163b62d5f 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/client/MixinMinecraftClient.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/client/MixinMinecraftClient.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.mixin.registry.sync.client;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.Unique;
 import org.spongepowered.asm.mixin.injection.At;
@@ -33,7 +33,7 @@ import net.fabricmc.fabric.impl.registry.sync.RemapException;
 @Mixin(MinecraftClient.class)
 public class MixinMinecraftClient {
 	@Unique
-	private static Logger FABRIC_LOGGER = LogManager.getLogger();
+	private static Logger FABRIC_LOGGER = LoggerFactory.getLogger(MixinMinecraftClient.class);
 
 	// Unmap the registry before loading a new SP/MP setup.
 	@Inject(at = @At("RETURN"), method = "disconnect(Lnet/minecraft/client/gui/screen/Screen;)V")
diff --git a/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/RegistrySyncTestClient.java b/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/RegistrySyncTestClient.java
index 9ca4cedfd..145e65e90 100644
--- a/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/RegistrySyncTestClient.java
+++ b/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/RegistrySyncTestClient.java
@@ -21,8 +21,8 @@ import java.util.Objects;
 
 import com.google.common.base.Preconditions;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.Identifier;
 
@@ -34,7 +34,7 @@ import net.fabricmc.fabric.impl.registry.sync.packet.RegistryPacketHandler;
 
 @Environment(EnvType.CLIENT)
 public class RegistrySyncTestClient implements ClientModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(RegistrySyncTestClient.class);
 
 	@Override
 	public void onInitializeClient() {
diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/Indigo.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/Indigo.java
index 9266c6455..6a49ebe7d 100644
--- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/Indigo.java
+++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/Indigo.java
@@ -23,8 +23,8 @@ import java.io.IOException;
 import java.util.Locale;
 import java.util.Properties;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.renderer.v1.RendererAccess;
@@ -43,7 +43,7 @@ public class Indigo implements ClientModInitializer {
 	public static final boolean FIX_EXTERIOR_VERTEX_LIGHTING;
 	public static final boolean FIX_LUMINOUS_AO_SHADE;
 
-	public static final Logger LOGGER = LogManager.getLogger();
+	public static final Logger LOGGER = LoggerFactory.getLogger(Indigo.class);
 
 	private static boolean asBoolean(String property, boolean defValue) {
 		switch (asTriState(property)) {
diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/aocalc/AoCalculator.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/aocalc/AoCalculator.java
index b75cd0846..07e9e0bff 100644
--- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/aocalc/AoCalculator.java
+++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/aocalc/AoCalculator.java
@@ -30,8 +30,8 @@ import static net.minecraft.util.math.Direction.WEST;
 import java.util.BitSet;
 import java.util.function.ToIntFunction;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Block;
 import net.minecraft.util.math.Vec3f;
@@ -75,7 +75,7 @@ public class AoCalculator {
 		VERTEX_MAP[EAST.getId()] = new int[] { 1, 2, 3, 0 };
 	}
 
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(AoCalculator.class);
 
 	private final AccessAmbientOcclusionCalculator vanillaCalc;
 	private final BlockPos.Mutable lightPos = new BlockPos.Mutable();
diff --git a/fabric-rendering-data-attachment-v1/src/main/java/net/fabricmc/fabric/mixin/rendering/data/attachment/client/MixinChunkRendererRegionBuilder.java b/fabric-rendering-data-attachment-v1/src/main/java/net/fabricmc/fabric/mixin/rendering/data/attachment/client/MixinChunkRendererRegionBuilder.java
index bb219bf00..90a4e2999 100644
--- a/fabric-rendering-data-attachment-v1/src/main/java/net/fabricmc/fabric/mixin/rendering/data/attachment/client/MixinChunkRendererRegionBuilder.java
+++ b/fabric-rendering-data-attachment-v1/src/main/java/net/fabricmc/fabric/mixin/rendering/data/attachment/client/MixinChunkRendererRegionBuilder.java
@@ -21,8 +21,8 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.injection.At;
 import org.spongepowered.asm.mixin.injection.Inject;
@@ -42,7 +42,7 @@ import net.fabricmc.fabric.impl.rendering.data.attachment.RenderDataObjectConsum
 @Mixin(ChunkRendererRegionBuilder.class)
 public abstract class MixinChunkRendererRegionBuilder {
 	private static final AtomicInteger ERROR_COUNTER = new AtomicInteger();
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(MixinChunkRendererRegionBuilder.class);
 
 	@Inject(at = @At("RETURN"), method = "build", locals = LocalCapture.CAPTURE_FAILHARD)
 	private void create(World world, BlockPos startPos, BlockPos endPos, int chunkRadius, CallbackInfoReturnable<ChunkRendererRegion> info, int i, int j, int k, int l, ChunkRendererRegionBuilder.ClientChunk[][] chunkData) {
diff --git a/fabric-rendering-v1/src/testmod/java/net/fabricmc/fabric/test/rendering/client/FeatureRendererTest.java b/fabric-rendering-v1/src/testmod/java/net/fabricmc/fabric/test/rendering/client/FeatureRendererTest.java
index 0bb8d6065..da174590d 100644
--- a/fabric-rendering-v1/src/testmod/java/net/fabricmc/fabric/test/rendering/client/FeatureRendererTest.java
+++ b/fabric-rendering-v1/src/testmod/java/net/fabricmc/fabric/test/rendering/client/FeatureRendererTest.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.test.rendering.client;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
@@ -36,7 +36,7 @@ import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityFeatureRendererRegistrationCallback;
 
 public final class FeatureRendererTest implements ClientModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger(FeatureRendererTest.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(FeatureRendererTest.class);
 	private int playerRegistrations = 0;
 
 	@Override
diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java
index 0a81fa8a4..80a50fa13 100644
--- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java
+++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/impl/resource/conditions/ResourceConditionsImpl.java
@@ -21,8 +21,8 @@ import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParseException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.ApiStatus;
 
 import net.minecraft.tag.ServerTagManagerHolder;
@@ -37,7 +37,7 @@ import net.fabricmc.loader.api.FabricLoader;
 
 @ApiStatus.Internal
 public class ResourceConditionsImpl {
-	public static final Logger LOGGER = LogManager.getLogger("Fabric Resource Conditions");
+	public static final Logger LOGGER = LoggerFactory.getLogger("Fabric Resource Conditions");
 
 	// Providers
 
diff --git a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModNioResourcePack.java b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModNioResourcePack.java
index 4395a0ca8..470b4e9f4 100644
--- a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModNioResourcePack.java
+++ b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModNioResourcePack.java
@@ -31,8 +31,8 @@ import java.util.Set;
 import java.util.function.Predicate;
 import java.util.regex.Pattern;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.resource.AbstractFileResourcePack;
 import net.minecraft.resource.ResourceType;
@@ -44,7 +44,7 @@ import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
 import net.fabricmc.loader.api.metadata.ModMetadata;
 
 public class ModNioResourcePack extends AbstractFileResourcePack implements ModResourcePack {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(ModNioResourcePack.class);
 	private static final Pattern RESOURCE_PACK_PATH = Pattern.compile("[a-z0-9-_]+");
 	private final ModMetadata modInfo;
 	private final Path basePath;
diff --git a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ResourceManagerHelperImpl.java b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ResourceManagerHelperImpl.java
index 0cd6786ab..2c1a43da6 100644
--- a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ResourceManagerHelperImpl.java
+++ b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ResourceManagerHelperImpl.java
@@ -28,8 +28,8 @@ import java.util.Set;
 import java.util.function.Consumer;
 
 import com.google.common.collect.Lists;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.resource.ResourcePackProfile;
 import net.minecraft.resource.ResourcePackSource;
@@ -46,7 +46,7 @@ import net.fabricmc.loader.api.ModContainer;
 public class ResourceManagerHelperImpl implements ResourceManagerHelper {
 	private static final Map<ResourceType, ResourceManagerHelperImpl> registryMap = new HashMap<>();
 	private static final Set<Pair<String, ModNioResourcePack>> builtinResourcePacks = new HashSet<>();
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(ResourceManagerHelperImpl.class);
 
 	private final Set<Identifier> addedListenerIds = new HashSet<>();
 	private final Set<IdentifiableResourceReloadListener> addedListeners = new LinkedHashSet<>();
diff --git a/fabric-resource-loader-v0/src/testmod/java/net/fabricmc/fabric/test/resource/loader/BuiltinResourcePackTestMod.java b/fabric-resource-loader-v0/src/testmod/java/net/fabricmc/fabric/test/resource/loader/BuiltinResourcePackTestMod.java
index bc6297b0b..42758e7d8 100644
--- a/fabric-resource-loader-v0/src/testmod/java/net/fabricmc/fabric/test/resource/loader/BuiltinResourcePackTestMod.java
+++ b/fabric-resource-loader-v0/src/testmod/java/net/fabricmc/fabric/test/resource/loader/BuiltinResourcePackTestMod.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.test.resource.loader;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.util.Identifier;
 
@@ -29,7 +29,7 @@ import net.fabricmc.loader.api.FabricLoader;
 public class BuiltinResourcePackTestMod implements ModInitializer {
 	public static final String MODID = "fabric-resource-loader-v0-testmod";
 
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(BuiltinResourcePackTestMod.class);
 
 	@Override
 	public void onInitialize() {
diff --git a/fabric-screen-api-v1/src/testmod/java/net/fabricmc/fabric/test/screen/ScreenTests.java b/fabric-screen-api-v1/src/testmod/java/net/fabricmc/fabric/test/screen/ScreenTests.java
index 66cbc5d80..85cd77733 100644
--- a/fabric-screen-api-v1/src/testmod/java/net/fabricmc/fabric/test/screen/ScreenTests.java
+++ b/fabric-screen-api-v1/src/testmod/java/net/fabricmc/fabric/test/screen/ScreenTests.java
@@ -19,8 +19,8 @@ package net.fabricmc.fabric.test.screen;
 import java.util.List;
 
 import com.mojang.blaze3d.systems.RenderSystem;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.DrawableHelper;
@@ -38,7 +38,7 @@ import net.fabricmc.fabric.api.client.screen.v1.Screens;
 
 @Environment(EnvType.CLIENT)
 public final class ScreenTests implements ClientModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger("FabricScreenApiTests");
+	private static final Logger LOGGER = LoggerFactory.getLogger("FabricScreenApiTests");
 
 	@Override
 	public void onInitializeClient() {
diff --git a/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/Networking.java b/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/Networking.java
index ca125291c..8e4336db1 100644
--- a/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/Networking.java
+++ b/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/Networking.java
@@ -19,8 +19,8 @@ package net.fabricmc.fabric.impl.screenhandler;
 import java.util.Objects;
 
 import io.netty.buffer.Unpooled;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.network.PacketByteBuf;
 import net.minecraft.screen.ScreenHandler;
@@ -32,7 +32,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
 import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory;
 
 public final class Networking {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-screen-handler-api-v1/server");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-screen-handler-api-v1/server");
 
 	// [Packet format]
 	// typeId: identifier
diff --git a/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/client/ClientNetworking.java b/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/client/ClientNetworking.java
index e49b8747c..953fa80bc 100644
--- a/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/client/ClientNetworking.java
+++ b/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/impl/screenhandler/client/ClientNetworking.java
@@ -16,8 +16,8 @@
 
 package net.fabricmc.fabric.impl.screenhandler.client;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.screen.Screen;
@@ -39,7 +39,7 @@ import net.fabricmc.fabric.impl.screenhandler.Networking;
 
 @Environment(EnvType.CLIENT)
 public final class ClientNetworking implements ClientModInitializer {
-	private static final Logger LOGGER = LogManager.getLogger("fabric-screen-handler-api-v1/client");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-screen-handler-api-v1/client");
 
 	@Override
 	public void onInitializeClient() {
diff --git a/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java b/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java
index 1e8a1c6c4..0666aaf31 100644
--- a/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java
+++ b/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java
@@ -20,8 +20,8 @@ import java.util.Optional;
 import java.util.Random;
 
 import com.mojang.serialization.Codec;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.block.Blocks;
 import net.minecraft.nbt.NbtCompound;
@@ -50,7 +50,7 @@ import net.fabricmc.fabric.api.structure.v1.FabricStructureBuilder;
 import net.fabricmc.fabric.api.structure.v1.StructurePoolAddCallback;
 
 public class StructureTest {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(StructureTest.class);
 
 	public static final StructureFeature<DefaultFeatureConfig> STRUCTURE = new TestStructureFeature(DefaultFeatureConfig.CODEC);
 	public static final ConfiguredStructureFeature<DefaultFeatureConfig, ? extends StructureFeature<DefaultFeatureConfig>> CONFIGURED_STRUCTURE = STRUCTURE.configure(new DefaultFeatureConfig());
diff --git a/fabric-tag-extensions-v0/src/main/java/net/fabricmc/fabric/impl/tag/extension/TagFactoryImpl.java b/fabric-tag-extensions-v0/src/main/java/net/fabricmc/fabric/impl/tag/extension/TagFactoryImpl.java
index 908dd90e4..94fea8f15 100644
--- a/fabric-tag-extensions-v0/src/main/java/net/fabricmc/fabric/impl/tag/extension/TagFactoryImpl.java
+++ b/fabric-tag-extensions-v0/src/main/java/net/fabricmc/fabric/impl/tag/extension/TagFactoryImpl.java
@@ -22,8 +22,8 @@ import java.util.function.Supplier;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Stopwatch;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.minecraft.resource.ResourceManager;
 import net.minecraft.resource.ServerResourceManager;
@@ -45,7 +45,7 @@ import net.fabricmc.fabric.mixin.tag.extension.DynamicRegistryManagerAccessor;
 
 @SuppressWarnings("ClassCanBeRecord")
 public final class TagFactoryImpl<T> implements TagFactory<T> {
-	private static final Logger LOGGER = LogManager.getLogger();
+	private static final Logger LOGGER = LoggerFactory.getLogger(TagFactoryImpl.class);
 
 	public static final Map<RegistryKey<? extends Registry<?>>, RequiredTagList<?>> TAG_LISTS = new HashMap<>();
 
diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/TransferApiImpl.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/TransferApiImpl.java
index f1d227425..eb99f199b 100644
--- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/TransferApiImpl.java
+++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/TransferApiImpl.java
@@ -20,15 +20,15 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 
 import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
 import net.fabricmc.fabric.api.transfer.v1.storage.StorageView;
 import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext;
 
 public class TransferApiImpl {
-	public static final Logger LOGGER = LogManager.getLogger("fabric-transfer-api-v1");
+	public static final Logger LOGGER = LoggerFactory.getLogger("fabric-transfer-api-v1");
 	public static final AtomicLong version = new AtomicLong();
 	@SuppressWarnings("rawtypes")
 	public static final Storage EMPTY_STORAGE = new Storage() {
diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/fluid/FluidVariantImpl.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/fluid/FluidVariantImpl.java
index 3a639d15f..9b8ec494b 100644
--- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/fluid/FluidVariantImpl.java
+++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/fluid/FluidVariantImpl.java
@@ -18,8 +18,8 @@ package net.fabricmc.fabric.impl.transfer.fluid;
 
 import java.util.Objects;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.fluid.Fluid;
@@ -49,7 +49,7 @@ public class FluidVariantImpl implements FluidVariant {
 		}
 	}
 
-	private static final Logger LOGGER = LogManager.getLogger("fabric-transfer-api-v1/fluid");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-transfer-api-v1/fluid");
 
 	private final Fluid fluid;
 	private final @Nullable NbtCompound nbt;
diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/ItemVariantImpl.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/ItemVariantImpl.java
index 2b8049ad9..df8ddcb8d 100644
--- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/ItemVariantImpl.java
+++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/impl/transfer/item/ItemVariantImpl.java
@@ -18,8 +18,8 @@ package net.fabricmc.fabric.impl.transfer.item;
 
 import java.util.Objects;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
 import org.jetbrains.annotations.Nullable;
 
 import net.minecraft.item.Item;
@@ -43,7 +43,7 @@ public class ItemVariantImpl implements ItemVariant {
 		}
 	}
 
-	private static final Logger LOGGER = LogManager.getLogger("fabric-transfer-api-v1/item");
+	private static final Logger LOGGER = LoggerFactory.getLogger("fabric-transfer-api-v1/item");
 
 	private final Item item;
 	private final @Nullable NbtCompound nbt;
diff --git a/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/unittests/UnitTestsInitializer.java b/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/unittests/UnitTestsInitializer.java
index 49ea2f82b..63cfaaa25 100644
--- a/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/unittests/UnitTestsInitializer.java
+++ b/fabric-transfer-api-v1/src/testmod/java/net/fabricmc/fabric/test/transfer/unittests/UnitTestsInitializer.java
@@ -16,7 +16,7 @@
 
 package net.fabricmc.fabric.test.transfer.unittests;
 
-import org.apache.logging.log4j.LogManager;
+import org.slf4j.LoggerFactory;
 
 import net.fabricmc.api.ModInitializer;
 
@@ -31,6 +31,6 @@ public class UnitTestsInitializer implements ModInitializer {
 		SingleVariantItemStorageTests.run();
 		TransactionExceptionsTests.run();
 
-		LogManager.getLogger("fabric-transfer-api-v1 testmod").info("Transfer API unit tests successful.");
+		LoggerFactory.getLogger("fabric-transfer-api-v1 testmod").info("Transfer API unit tests successful.");
 	}
 }