Просмотр исходного кода

Merge pull request #84 from L2J/feature/logging

Reworking loggers
Zoey76 9 лет назад
Родитель
Сommit
742533d72d
70 измененных файлов с 681 добавлено и 714 удалено
  1. 2 0
      L2J_Server/.classpath
  2. 1 1
      L2J_Server/dist/game/config/Character.properties
  3. 244 247
      L2J_Server/java/com/l2jserver/Config.java
  4. 13 13
      L2J_Server/java/com/l2jserver/UPnPService.java
  5. 5 3
      L2J_Server/java/com/l2jserver/commons/database/pool/AbstractConnectionFactory.java
  6. 1 1
      L2J_Server/java/com/l2jserver/commons/database/pool/impl/BoneCPConnectionFactory.java
  7. 5 10
      L2J_Server/java/com/l2jserver/commons/database/pool/impl/C3P0ConnectionFactory.java
  8. 1 1
      L2J_Server/java/com/l2jserver/commons/database/pool/impl/HikariCPConnectionFactory.java
  9. 8 4
      L2J_Server/java/com/l2jserver/gameserver/FortUpdater.java
  10. 19 17
      L2J_Server/java/com/l2jserver/gameserver/GameServer.java
  11. 7 6
      L2J_Server/java/com/l2jserver/gameserver/GameTimeController.java
  12. 10 8
      L2J_Server/java/com/l2jserver/gameserver/GeoData.java
  13. 30 35
      L2J_Server/java/com/l2jserver/gameserver/LoginServerThread.java
  14. 5 5
      L2J_Server/java/com/l2jserver/gameserver/MonsterRace.java
  15. 21 19
      L2J_Server/java/com/l2jserver/gameserver/SevenSigns.java
  16. 14 12
      L2J_Server/java/com/l2jserver/gameserver/SevenSignsFestival.java
  17. 47 48
      L2J_Server/java/com/l2jserver/gameserver/Shutdown.java
  18. 8 7
      L2J_Server/java/com/l2jserver/gameserver/ThreadPoolManager.java
  19. 5 3
      L2J_Server/java/com/l2jserver/gameserver/ai/AbstractAI.java
  20. 0 1
      L2J_Server/java/com/l2jserver/gameserver/ai/Ctrl.java
  21. 3 3
      L2J_Server/java/com/l2jserver/gameserver/ai/L2AttackableAI.java
  22. 3 3
      L2J_Server/java/com/l2jserver/gameserver/ai/L2CharacterAI.java
  23. 3 10
      L2J_Server/java/com/l2jserver/gameserver/ai/L2FortSiegeGuardAI.java
  24. 2 9
      L2J_Server/java/com/l2jserver/gameserver/ai/L2SiegeGuardAI.java
  25. 9 8
      L2J_Server/java/com/l2jserver/gameserver/cache/HtmCache.java
  26. 9 8
      L2J_Server/java/com/l2jserver/gameserver/communitybbs/BB/Forum.java
  27. 9 8
      L2J_Server/java/com/l2jserver/gameserver/communitybbs/BB/Post.java
  28. 6 5
      L2J_Server/java/com/l2jserver/gameserver/communitybbs/BB/Topic.java
  29. 5 6
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/AdminData.java
  30. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ArmorSetsData.java
  31. 6 7
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/BuyListData.java
  32. 3 7
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/CategoryData.java
  33. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ClassListData.java
  34. 1 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/DoorData.java
  35. 6 7
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemData.java
  36. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemGroupsData.java
  37. 8 8
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemHPBonusData.java
  38. 1 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemOptionsData.java
  39. 2 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantSkillGroupsData.java
  40. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ExperienceData.java
  41. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishData.java
  42. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingMonstersData.java
  43. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingRodsData.java
  44. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HennaData.java
  45. 8 12
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HitConditionBonusData.java
  46. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialEquipmentData.java
  47. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialShortcutData.java
  48. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/KarmaData.java
  49. 8 10
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/MultisellData.java
  50. 5 5
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/NpcData.java
  51. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/OptionData.java
  52. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PetDataTable.java
  53. 2 5
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerTemplateData.java
  54. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerXpPercentLostData.java
  55. 9 9
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/RecipeData.java
  56. 3 3
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SecondaryAuthData.java
  57. 4 4
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SiegeScheduleData.java
  58. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillLearnData.java
  59. 17 17
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java
  60. 1 1
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/StaticObjectData.java
  61. 2 2
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/TransformData.java
  62. 1 4
      L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/UIData.java
  63. 10 15
      L2J_Server/java/com/l2jserver/gameserver/datatables/SpawnTable.java
  64. 14 14
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManorManager.java
  65. 8 7
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java
  66. 2 1
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java
  67. 5 5
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/WalkingManager.java
  68. 18 22
      L2J_Server/java/com/l2jserver/gameserver/instancemanager/ZoneManager.java
  69. 6 6
      L2J_Server/java/com/l2jserver/loginserver/GameServerTable.java
  70. 9 8
      L2J_Server/java/com/l2jserver/util/data/xml/IXmlReader.java

+ 2 - 0
L2J_Server/.classpath

@@ -10,5 +10,7 @@
 	<classpathentry kind="lib" path="dist/libs/mail-1.5.2.jar" />
 	<classpathentry kind="lib" path="dist/libs/mmocore.jar" />
 	<classpathentry kind="lib" path="dist/libs/weupnp-0.1.3.jar" />
+	<classpathentry kind="lib" path="dist/libs/slf4j-api-1.7.12.jar" />
+	<classpathentry kind="lib" path="dist/libs/slf4j-jdk14-1.7.12.jar" />
 	<classpathentry kind="output" path="bin" />
 </classpath>

+ 1 - 1
L2J_Server/dist/game/config/Character.properties

@@ -702,7 +702,7 @@ PlayerSpawnProtection = 600
 # of the item usage from items in this list.
 # Format: itemId,itemId,itemId,....
 # Default: 0
-PlayerSpawnProtectionAllowedItems = 0
+PlayerSpawnProtectionAllowedItems =
 
 # Teleport spawn protection time. It will protect the player in the
 # teleport spawn for the given time. 0 to disable feature

+ 244 - 247
L2J_Server/java/com/l2jserver/Config.java

@@ -46,11 +46,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.StringTokenizer;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -72,7 +72,7 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class Config
 {
-	private static final Logger _log = Logger.getLogger(Config.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(Config.class);
 	
 	// --------------------------------------------------
 	// Constants
@@ -1159,7 +1159,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				_log.log(Level.WARNING, "Error setting datapack root!", e);
+				_log.warn("Error setting datapack root!", e);
 				DATAPACK_ROOT = new File(".");
 			}
 			
@@ -1180,7 +1180,7 @@ public final class Config
 				}
 				catch (NumberFormatException e)
 				{
-					_log.log(Level.WARNING, "Wrong config protocol version: " + protocol + ". Skipped.");
+					_log.warn("Wrong config protocol version: {}, skipped.", protocol);
 				}
 			}
 			
@@ -1373,33 +1373,33 @@ public final class Config
 			ALLOW_WYVERN_DURING_SIEGE = Feature.getBoolean("AllowRideWyvernDuringSiege", true);
 			
 			// Load Character L2Properties file (if exists)
-			final PropertiesParser Character = new PropertiesParser(CHARACTER_CONFIG_FILE);
-			
-			ALT_GAME_DELEVEL = Character.getBoolean("Delevel", true);
-			DECREASE_SKILL_LEVEL = Character.getBoolean("DecreaseSkillOnDelevel", true);
-			ALT_WEIGHT_LIMIT = Character.getDouble("AltWeightLimit", 1);
-			RUN_SPD_BOOST = Character.getInt("RunSpeedBoost", 0);
-			DEATH_PENALTY_CHANCE = Character.getInt("DeathPenaltyChance", 20);
-			RESPAWN_RESTORE_CP = Character.getDouble("RespawnRestoreCP", 0) / 100;
-			RESPAWN_RESTORE_HP = Character.getDouble("RespawnRestoreHP", 65) / 100;
-			RESPAWN_RESTORE_MP = Character.getDouble("RespawnRestoreMP", 0) / 100;
-			HP_REGEN_MULTIPLIER = Character.getDouble("HpRegenMultiplier", 100) / 100;
-			MP_REGEN_MULTIPLIER = Character.getDouble("MpRegenMultiplier", 100) / 100;
-			CP_REGEN_MULTIPLIER = Character.getDouble("CpRegenMultiplier", 100) / 100;
-			ALT_GAME_TIREDNESS = Character.getBoolean("AltGameTiredness", false);
-			ENABLE_MODIFY_SKILL_DURATION = Character.getBoolean("EnableModifySkillDuration", false);
+			final PropertiesParser character = new PropertiesParser(CHARACTER_CONFIG_FILE);
+			
+			ALT_GAME_DELEVEL = character.getBoolean("Delevel", true);
+			DECREASE_SKILL_LEVEL = character.getBoolean("DecreaseSkillOnDelevel", true);
+			ALT_WEIGHT_LIMIT = character.getDouble("AltWeightLimit", 1);
+			RUN_SPD_BOOST = character.getInt("RunSpeedBoost", 0);
+			DEATH_PENALTY_CHANCE = character.getInt("DeathPenaltyChance", 20);
+			RESPAWN_RESTORE_CP = character.getDouble("RespawnRestoreCP", 0) / 100;
+			RESPAWN_RESTORE_HP = character.getDouble("RespawnRestoreHP", 65) / 100;
+			RESPAWN_RESTORE_MP = character.getDouble("RespawnRestoreMP", 0) / 100;
+			HP_REGEN_MULTIPLIER = character.getDouble("HpRegenMultiplier", 100) / 100;
+			MP_REGEN_MULTIPLIER = character.getDouble("MpRegenMultiplier", 100) / 100;
+			CP_REGEN_MULTIPLIER = character.getDouble("CpRegenMultiplier", 100) / 100;
+			ALT_GAME_TIREDNESS = character.getBoolean("AltGameTiredness", false);
+			ENABLE_MODIFY_SKILL_DURATION = character.getBoolean("EnableModifySkillDuration", false);
 			
 			// Create Map only if enabled
 			if (ENABLE_MODIFY_SKILL_DURATION)
 			{
-				String[] propertySplit = Character.getString("SkillDurationList", "").split(";");
+				String[] propertySplit = character.getString("SkillDurationList", "").split(";");
 				SKILL_DURATION_LIST = new HashMap<>(propertySplit.length);
 				for (String skill : propertySplit)
 				{
 					String[] skillSplit = skill.split(",");
 					if (skillSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillDurationList \"", skill, "\""));
+						_log.warn("[SkillDurationList]: invalid config property -> SkillDurationList {}", skill);
 					}
 					else
 					{
@@ -1411,24 +1411,24 @@ public final class Config
 						{
 							if (!skill.isEmpty())
 							{
-								_log.warning(StringUtil.concat("[SkillDurationList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
+								_log.warn("[SkillDurationList]: invalid config property -> SkillList {}", skill);
 							}
 						}
 					}
 				}
 			}
-			ENABLE_MODIFY_SKILL_REUSE = Character.getBoolean("EnableModifySkillReuse", false);
+			ENABLE_MODIFY_SKILL_REUSE = character.getBoolean("EnableModifySkillReuse", false);
 			// Create Map only if enabled
 			if (ENABLE_MODIFY_SKILL_REUSE)
 			{
-				String[] propertySplit = Character.getString("SkillReuseList", "").split(";");
+				String[] propertySplit = character.getString("SkillReuseList", "").split(";");
 				SKILL_REUSE_LIST = new HashMap<>(propertySplit.length);
 				for (String skill : propertySplit)
 				{
 					String[] skillSplit = skill.split(",");
 					if (skillSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillReuseList \"", skill, "\""));
+						_log.warn("[SkillReuseList]: invalid config property -> SkillReuseList {}", skill);
 					}
 					else
 					{
@@ -1440,86 +1440,86 @@ public final class Config
 						{
 							if (!skill.isEmpty())
 							{
-								_log.warning(StringUtil.concat("[SkillReuseList]: invalid config property -> SkillList \"", skillSplit[0], "\"", skillSplit[1]));
+								_log.warn("[SkillReuseList]: invalid config property -> SkillList {}", skill);
 							}
 						}
 					}
 				}
 			}
 			
-			AUTO_LEARN_SKILLS = Character.getBoolean("AutoLearnSkills", false);
-			AUTO_LEARN_FS_SKILLS = Character.getBoolean("AutoLearnForgottenScrollSkills", false);
-			AUTO_LOOT_HERBS = Character.getBoolean("AutoLootHerbs", false);
-			BUFFS_MAX_AMOUNT = Character.getByte("MaxBuffAmount", (byte) 20);
-			TRIGGERED_BUFFS_MAX_AMOUNT = Character.getByte("MaxTriggeredBuffAmount", (byte) 12);
-			DANCES_MAX_AMOUNT = Character.getByte("MaxDanceAmount", (byte) 12);
-			DANCE_CANCEL_BUFF = Character.getBoolean("DanceCancelBuff", false);
-			DANCE_CONSUME_ADDITIONAL_MP = Character.getBoolean("DanceConsumeAdditionalMP", true);
-			ALT_STORE_DANCES = Character.getBoolean("AltStoreDances", false);
-			AUTO_LEARN_DIVINE_INSPIRATION = Character.getBoolean("AutoLearnDivineInspiration", false);
-			ALT_GAME_CANCEL_BOW = Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
-			ALT_GAME_CANCEL_CAST = Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || Character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
-			ALT_GAME_MAGICFAILURES = Character.getBoolean("MagicFailures", true);
-			PLAYER_FAKEDEATH_UP_PROTECTION = Character.getInt("PlayerFakeDeathUpProtection", 0);
-			STORE_SKILL_COOLTIME = Character.getBoolean("StoreSkillCooltime", true);
-			SUBCLASS_STORE_SKILL_COOLTIME = Character.getBoolean("SubclassStoreSkillCooltime", false);
-			SUMMON_STORE_SKILL_COOLTIME = Character.getBoolean("SummonStoreSkillCooltime", true);
-			ALT_GAME_SHIELD_BLOCKS = Character.getBoolean("AltShieldBlocks", false);
-			ALT_PERFECT_SHLD_BLOCK = Character.getInt("AltPerfectShieldBlockRate", 10);
-			EFFECT_TICK_RATIO = Character.getLong("EffectTickRatio", 666);
-			ALLOW_CLASS_MASTERS = Character.getBoolean("AllowClassMasters", false);
-			ALLOW_ENTIRE_TREE = Character.getBoolean("AllowEntireTree", false);
-			ALTERNATE_CLASS_MASTER = Character.getBoolean("AlternateClassMaster", false);
+			AUTO_LEARN_SKILLS = character.getBoolean("AutoLearnSkills", false);
+			AUTO_LEARN_FS_SKILLS = character.getBoolean("AutoLearnForgottenScrollSkills", false);
+			AUTO_LOOT_HERBS = character.getBoolean("AutoLootHerbs", false);
+			BUFFS_MAX_AMOUNT = character.getByte("MaxBuffAmount", (byte) 20);
+			TRIGGERED_BUFFS_MAX_AMOUNT = character.getByte("MaxTriggeredBuffAmount", (byte) 12);
+			DANCES_MAX_AMOUNT = character.getByte("MaxDanceAmount", (byte) 12);
+			DANCE_CANCEL_BUFF = character.getBoolean("DanceCancelBuff", false);
+			DANCE_CONSUME_ADDITIONAL_MP = character.getBoolean("DanceConsumeAdditionalMP", true);
+			ALT_STORE_DANCES = character.getBoolean("AltStoreDances", false);
+			AUTO_LEARN_DIVINE_INSPIRATION = character.getBoolean("AutoLearnDivineInspiration", false);
+			ALT_GAME_CANCEL_BOW = character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("bow") || character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+			ALT_GAME_CANCEL_CAST = character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("cast") || character.getString("AltGameCancelByHit", "Cast").equalsIgnoreCase("all");
+			ALT_GAME_MAGICFAILURES = character.getBoolean("MagicFailures", true);
+			PLAYER_FAKEDEATH_UP_PROTECTION = character.getInt("PlayerFakeDeathUpProtection", 0);
+			STORE_SKILL_COOLTIME = character.getBoolean("StoreSkillCooltime", true);
+			SUBCLASS_STORE_SKILL_COOLTIME = character.getBoolean("SubclassStoreSkillCooltime", false);
+			SUMMON_STORE_SKILL_COOLTIME = character.getBoolean("SummonStoreSkillCooltime", true);
+			ALT_GAME_SHIELD_BLOCKS = character.getBoolean("AltShieldBlocks", false);
+			ALT_PERFECT_SHLD_BLOCK = character.getInt("AltPerfectShieldBlockRate", 10);
+			EFFECT_TICK_RATIO = character.getLong("EffectTickRatio", 666);
+			ALLOW_CLASS_MASTERS = character.getBoolean("AllowClassMasters", false);
+			ALLOW_ENTIRE_TREE = character.getBoolean("AllowEntireTree", false);
+			ALTERNATE_CLASS_MASTER = character.getBoolean("AlternateClassMaster", false);
 			if (ALLOW_CLASS_MASTERS || ALTERNATE_CLASS_MASTER)
 			{
-				CLASS_MASTER_SETTINGS = new ClassMasterSettings(Character.getString("ConfigClassMaster", ""));
-			}
-			LIFE_CRYSTAL_NEEDED = Character.getBoolean("LifeCrystalNeeded", true);
-			ES_SP_BOOK_NEEDED = Character.getBoolean("EnchantSkillSpBookNeeded", true);
-			DIVINE_SP_BOOK_NEEDED = Character.getBoolean("DivineInspirationSpBookNeeded", true);
-			ALT_GAME_SKILL_LEARN = Character.getBoolean("AltGameSkillLearn", false);
-			ALT_GAME_SUBCLASS_WITHOUT_QUESTS = Character.getBoolean("AltSubClassWithoutQuests", false);
-			ALT_GAME_SUBCLASS_EVERYWHERE = Character.getBoolean("AltSubclassEverywhere", false);
-			RESTORE_SERVITOR_ON_RECONNECT = Character.getBoolean("RestoreServitorOnReconnect", true);
-			RESTORE_PET_ON_RECONNECT = Character.getBoolean("RestorePetOnReconnect", true);
-			ALLOW_TRANSFORM_WITHOUT_QUEST = Character.getBoolean("AltTransformationWithoutQuest", false);
-			FEE_DELETE_TRANSFER_SKILLS = Character.getInt("FeeDeleteTransferSkills", 10000000);
-			FEE_DELETE_SUBCLASS_SKILLS = Character.getInt("FeeDeleteSubClassSkills", 10000000);
-			ENABLE_VITALITY = Character.getBoolean("EnableVitality", true);
-			RECOVER_VITALITY_ON_RECONNECT = Character.getBoolean("RecoverVitalityOnReconnect", true);
-			STARTING_VITALITY_POINTS = Character.getInt("StartingVitalityPoints", 20000);
-			MAX_BONUS_EXP = Character.getDouble("MaxExpBonus", 3.5);
-			MAX_BONUS_SP = Character.getDouble("MaxSpBonus", 3.5);
-			MAX_RUN_SPEED = Character.getInt("MaxRunSpeed", 250);
-			MAX_PCRIT_RATE = Character.getInt("MaxPCritRate", 500);
-			MAX_MCRIT_RATE = Character.getInt("MaxMCritRate", 200);
-			MAX_PATK_SPEED = Character.getInt("MaxPAtkSpeed", 1500);
-			MAX_MATK_SPEED = Character.getInt("MaxMAtkSpeed", 1999);
-			MAX_EVASION = Character.getInt("MaxEvasion", 250);
-			MIN_ABNORMAL_STATE_SUCCESS_RATE = Character.getInt("MinAbnormalStateSuccessRate", 10);
-			MAX_ABNORMAL_STATE_SUCCESS_RATE = Character.getInt("MaxAbnormalStateSuccessRate", 90);
-			MAX_SUBCLASS = Character.getByte("MaxSubclass", (byte) 3);
-			BASE_SUBCLASS_LEVEL = Character.getByte("BaseSubclassLevel", (byte) 40);
-			MAX_SUBCLASS_LEVEL = Character.getByte("MaxSubclassLevel", (byte) 80);
-			MAX_PVTSTORESELL_SLOTS_DWARF = Character.getInt("MaxPvtStoreSellSlotsDwarf", 4);
-			MAX_PVTSTORESELL_SLOTS_OTHER = Character.getInt("MaxPvtStoreSellSlotsOther", 3);
-			MAX_PVTSTOREBUY_SLOTS_DWARF = Character.getInt("MaxPvtStoreBuySlotsDwarf", 5);
-			MAX_PVTSTOREBUY_SLOTS_OTHER = Character.getInt("MaxPvtStoreBuySlotsOther", 4);
-			INVENTORY_MAXIMUM_NO_DWARF = Character.getInt("MaximumSlotsForNoDwarf", 80);
-			INVENTORY_MAXIMUM_DWARF = Character.getInt("MaximumSlotsForDwarf", 100);
-			INVENTORY_MAXIMUM_GM = Character.getInt("MaximumSlotsForGMPlayer", 250);
-			INVENTORY_MAXIMUM_QUEST_ITEMS = Character.getInt("MaximumSlotsForQuestItems", 100);
+				CLASS_MASTER_SETTINGS = new ClassMasterSettings(character.getString("ConfigClassMaster", ""));
+			}
+			LIFE_CRYSTAL_NEEDED = character.getBoolean("LifeCrystalNeeded", true);
+			ES_SP_BOOK_NEEDED = character.getBoolean("EnchantSkillSpBookNeeded", true);
+			DIVINE_SP_BOOK_NEEDED = character.getBoolean("DivineInspirationSpBookNeeded", true);
+			ALT_GAME_SKILL_LEARN = character.getBoolean("AltGameSkillLearn", false);
+			ALT_GAME_SUBCLASS_WITHOUT_QUESTS = character.getBoolean("AltSubClassWithoutQuests", false);
+			ALT_GAME_SUBCLASS_EVERYWHERE = character.getBoolean("AltSubclassEverywhere", false);
+			RESTORE_SERVITOR_ON_RECONNECT = character.getBoolean("RestoreServitorOnReconnect", true);
+			RESTORE_PET_ON_RECONNECT = character.getBoolean("RestorePetOnReconnect", true);
+			ALLOW_TRANSFORM_WITHOUT_QUEST = character.getBoolean("AltTransformationWithoutQuest", false);
+			FEE_DELETE_TRANSFER_SKILLS = character.getInt("FeeDeleteTransferSkills", 10000000);
+			FEE_DELETE_SUBCLASS_SKILLS = character.getInt("FeeDeleteSubClassSkills", 10000000);
+			ENABLE_VITALITY = character.getBoolean("EnableVitality", true);
+			RECOVER_VITALITY_ON_RECONNECT = character.getBoolean("RecoverVitalityOnReconnect", true);
+			STARTING_VITALITY_POINTS = character.getInt("StartingVitalityPoints", 20000);
+			MAX_BONUS_EXP = character.getDouble("MaxExpBonus", 3.5);
+			MAX_BONUS_SP = character.getDouble("MaxSpBonus", 3.5);
+			MAX_RUN_SPEED = character.getInt("MaxRunSpeed", 250);
+			MAX_PCRIT_RATE = character.getInt("MaxPCritRate", 500);
+			MAX_MCRIT_RATE = character.getInt("MaxMCritRate", 200);
+			MAX_PATK_SPEED = character.getInt("MaxPAtkSpeed", 1500);
+			MAX_MATK_SPEED = character.getInt("MaxMAtkSpeed", 1999);
+			MAX_EVASION = character.getInt("MaxEvasion", 250);
+			MIN_ABNORMAL_STATE_SUCCESS_RATE = character.getInt("MinAbnormalStateSuccessRate", 10);
+			MAX_ABNORMAL_STATE_SUCCESS_RATE = character.getInt("MaxAbnormalStateSuccessRate", 90);
+			MAX_SUBCLASS = character.getByte("MaxSubclass", (byte) 3);
+			BASE_SUBCLASS_LEVEL = character.getByte("BaseSubclassLevel", (byte) 40);
+			MAX_SUBCLASS_LEVEL = character.getByte("MaxSubclassLevel", (byte) 80);
+			MAX_PVTSTORESELL_SLOTS_DWARF = character.getInt("MaxPvtStoreSellSlotsDwarf", 4);
+			MAX_PVTSTORESELL_SLOTS_OTHER = character.getInt("MaxPvtStoreSellSlotsOther", 3);
+			MAX_PVTSTOREBUY_SLOTS_DWARF = character.getInt("MaxPvtStoreBuySlotsDwarf", 5);
+			MAX_PVTSTOREBUY_SLOTS_OTHER = character.getInt("MaxPvtStoreBuySlotsOther", 4);
+			INVENTORY_MAXIMUM_NO_DWARF = character.getInt("MaximumSlotsForNoDwarf", 80);
+			INVENTORY_MAXIMUM_DWARF = character.getInt("MaximumSlotsForDwarf", 100);
+			INVENTORY_MAXIMUM_GM = character.getInt("MaximumSlotsForGMPlayer", 250);
+			INVENTORY_MAXIMUM_QUEST_ITEMS = character.getInt("MaximumSlotsForQuestItems", 100);
 			MAX_ITEM_IN_PACKET = Math.max(INVENTORY_MAXIMUM_NO_DWARF, Math.max(INVENTORY_MAXIMUM_DWARF, INVENTORY_MAXIMUM_GM));
-			WAREHOUSE_SLOTS_DWARF = Character.getInt("MaximumWarehouseSlotsForDwarf", 120);
-			WAREHOUSE_SLOTS_NO_DWARF = Character.getInt("MaximumWarehouseSlotsForNoDwarf", 100);
-			WAREHOUSE_SLOTS_CLAN = Character.getInt("MaximumWarehouseSlotsForClan", 150);
-			ALT_FREIGHT_SLOTS = Character.getInt("MaximumFreightSlots", 200);
-			ALT_FREIGHT_PRICE = Character.getInt("FreightPrice", 1000);
-			ENCHANT_CHANCE_ELEMENT_STONE = Character.getDouble("EnchantChanceElementStone", 50);
-			ENCHANT_CHANCE_ELEMENT_CRYSTAL = Character.getDouble("EnchantChanceElementCrystal", 30);
-			ENCHANT_CHANCE_ELEMENT_JEWEL = Character.getDouble("EnchantChanceElementJewel", 20);
-			ENCHANT_CHANCE_ELEMENT_ENERGY = Character.getDouble("EnchantChanceElementEnergy", 10);
-			String[] notenchantable = Character.getString("EnchantBlackList", "7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,13293,13294,13296").split(",");
+			WAREHOUSE_SLOTS_DWARF = character.getInt("MaximumWarehouseSlotsForDwarf", 120);
+			WAREHOUSE_SLOTS_NO_DWARF = character.getInt("MaximumWarehouseSlotsForNoDwarf", 100);
+			WAREHOUSE_SLOTS_CLAN = character.getInt("MaximumWarehouseSlotsForClan", 150);
+			ALT_FREIGHT_SLOTS = character.getInt("MaximumFreightSlots", 200);
+			ALT_FREIGHT_PRICE = character.getInt("FreightPrice", 1000);
+			ENCHANT_CHANCE_ELEMENT_STONE = character.getDouble("EnchantChanceElementStone", 50);
+			ENCHANT_CHANCE_ELEMENT_CRYSTAL = character.getDouble("EnchantChanceElementCrystal", 30);
+			ENCHANT_CHANCE_ELEMENT_JEWEL = character.getDouble("EnchantChanceElementJewel", 20);
+			ENCHANT_CHANCE_ELEMENT_ENERGY = character.getDouble("EnchantChanceElementEnergy", 10);
+			String[] notenchantable = character.getString("EnchantBlackList", "7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,13293,13294,13296").split(",");
 			ENCHANT_BLACKLIST = new int[notenchantable.length];
 			for (int i = 0; i < notenchantable.length; i++)
 			{
@@ -1527,45 +1527,45 @@ public final class Config
 			}
 			Arrays.sort(ENCHANT_BLACKLIST);
 			
-			AUGMENTATION_NG_SKILL_CHANCE = Character.getInt("AugmentationNGSkillChance", 15);
-			AUGMENTATION_NG_GLOW_CHANCE = Character.getInt("AugmentationNGGlowChance", 0);
-			AUGMENTATION_MID_SKILL_CHANCE = Character.getInt("AugmentationMidSkillChance", 30);
-			AUGMENTATION_MID_GLOW_CHANCE = Character.getInt("AugmentationMidGlowChance", 40);
-			AUGMENTATION_HIGH_SKILL_CHANCE = Character.getInt("AugmentationHighSkillChance", 45);
-			AUGMENTATION_HIGH_GLOW_CHANCE = Character.getInt("AugmentationHighGlowChance", 70);
-			AUGMENTATION_TOP_SKILL_CHANCE = Character.getInt("AugmentationTopSkillChance", 60);
-			AUGMENTATION_TOP_GLOW_CHANCE = Character.getInt("AugmentationTopGlowChance", 100);
-			AUGMENTATION_BASESTAT_CHANCE = Character.getInt("AugmentationBaseStatChance", 1);
-			AUGMENTATION_ACC_SKILL_CHANCE = Character.getInt("AugmentationAccSkillChance", 0);
-			
-			RETAIL_LIKE_AUGMENTATION = Character.getBoolean("RetailLikeAugmentation", true);
-			String[] array = Character.getString("RetailLikeAugmentationNoGradeChance", "55,35,7,3").split(",");
+			AUGMENTATION_NG_SKILL_CHANCE = character.getInt("AugmentationNGSkillChance", 15);
+			AUGMENTATION_NG_GLOW_CHANCE = character.getInt("AugmentationNGGlowChance", 0);
+			AUGMENTATION_MID_SKILL_CHANCE = character.getInt("AugmentationMidSkillChance", 30);
+			AUGMENTATION_MID_GLOW_CHANCE = character.getInt("AugmentationMidGlowChance", 40);
+			AUGMENTATION_HIGH_SKILL_CHANCE = character.getInt("AugmentationHighSkillChance", 45);
+			AUGMENTATION_HIGH_GLOW_CHANCE = character.getInt("AugmentationHighGlowChance", 70);
+			AUGMENTATION_TOP_SKILL_CHANCE = character.getInt("AugmentationTopSkillChance", 60);
+			AUGMENTATION_TOP_GLOW_CHANCE = character.getInt("AugmentationTopGlowChance", 100);
+			AUGMENTATION_BASESTAT_CHANCE = character.getInt("AugmentationBaseStatChance", 1);
+			AUGMENTATION_ACC_SKILL_CHANCE = character.getInt("AugmentationAccSkillChance", 0);
+			
+			RETAIL_LIKE_AUGMENTATION = character.getBoolean("RetailLikeAugmentation", true);
+			String[] array = character.getString("RetailLikeAugmentationNoGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_NG_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_NG_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			array = Character.getString("RetailLikeAugmentationMidGradeChance", "55,35,7,3").split(",");
+			array = character.getString("RetailLikeAugmentationMidGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_MID_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_MID_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			array = Character.getString("RetailLikeAugmentationHighGradeChance", "55,35,7,3").split(",");
+			array = character.getString("RetailLikeAugmentationHighGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_HIGH_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_HIGH_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			array = Character.getString("RetailLikeAugmentationTopGradeChance", "55,35,7,3").split(",");
+			array = character.getString("RetailLikeAugmentationTopGradeChance", "55,35,7,3").split(",");
 			RETAIL_LIKE_AUGMENTATION_TOP_CHANCE = new int[array.length];
 			for (int i = 0; i < 4; i++)
 			{
 				RETAIL_LIKE_AUGMENTATION_TOP_CHANCE[i] = Integer.parseInt(array[i]);
 			}
-			RETAIL_LIKE_AUGMENTATION_ACCESSORY = Character.getBoolean("RetailLikeAugmentationAccessory", true);
+			RETAIL_LIKE_AUGMENTATION_ACCESSORY = character.getBoolean("RetailLikeAugmentationAccessory", true);
 			
-			array = Character.getString("AugmentationBlackList", "6656,6657,6658,6659,6660,6661,6662,8191,10170,10314,13740,13741,13742,13743,13744,13745,13746,13747,13748,14592,14593,14594,14595,14596,14597,14598,14599,14600,14664,14665,14666,14667,14668,14669,14670,14671,14672,14801,14802,14803,14804,14805,14806,14807,14808,14809,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,16025,16026,21712,22173,22174,22175").split(",");
+			array = character.getString("AugmentationBlackList", "6656,6657,6658,6659,6660,6661,6662,8191,10170,10314,13740,13741,13742,13743,13744,13745,13746,13747,13748,14592,14593,14594,14595,14596,14597,14598,14599,14600,14664,14665,14666,14667,14668,14669,14670,14671,14672,14801,14802,14803,14804,14805,14806,14807,14808,14809,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,16025,16026,21712,22173,22174,22175").split(",");
 			AUGMENTATION_BLACKLIST = new int[array.length];
 			
 			for (int i = 0; i < array.length; i++)
@@ -1574,101 +1574,99 @@ public final class Config
 			}
 			
 			Arrays.sort(AUGMENTATION_BLACKLIST);
-			ALT_ALLOW_AUGMENT_PVP_ITEMS = Character.getBoolean("AltAllowAugmentPvPItems", false);
-			ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = Character.getBoolean("AltKarmaPlayerCanBeKilledInPeaceZone", false);
-			ALT_GAME_KARMA_PLAYER_CAN_SHOP = Character.getBoolean("AltKarmaPlayerCanShop", true);
-			ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = Character.getBoolean("AltKarmaPlayerCanTeleport", true);
-			ALT_GAME_KARMA_PLAYER_CAN_USE_GK = Character.getBoolean("AltKarmaPlayerCanUseGK", false);
-			ALT_GAME_KARMA_PLAYER_CAN_TRADE = Character.getBoolean("AltKarmaPlayerCanTrade", true);
-			ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = Character.getBoolean("AltKarmaPlayerCanUseWareHouse", true);
-			MAX_PERSONAL_FAME_POINTS = Character.getInt("MaxPersonalFamePoints", 100000);
-			FORTRESS_ZONE_FAME_TASK_FREQUENCY = Character.getInt("FortressZoneFameTaskFrequency", 300);
-			FORTRESS_ZONE_FAME_AQUIRE_POINTS = Character.getInt("FortressZoneFameAquirePoints", 31);
-			CASTLE_ZONE_FAME_TASK_FREQUENCY = Character.getInt("CastleZoneFameTaskFrequency", 300);
-			CASTLE_ZONE_FAME_AQUIRE_POINTS = Character.getInt("CastleZoneFameAquirePoints", 125);
-			FAME_FOR_DEAD_PLAYERS = Character.getBoolean("FameForDeadPlayers", true);
-			IS_CRAFTING_ENABLED = Character.getBoolean("CraftingEnabled", true);
-			CRAFT_MASTERWORK = Character.getBoolean("CraftMasterwork", true);
-			DWARF_RECIPE_LIMIT = Character.getInt("DwarfRecipeLimit", 50);
-			COMMON_RECIPE_LIMIT = Character.getInt("CommonRecipeLimit", 50);
-			ALT_GAME_CREATION = Character.getBoolean("AltGameCreation", false);
-			ALT_GAME_CREATION_SPEED = Character.getDouble("AltGameCreationSpeed", 1);
-			ALT_GAME_CREATION_XP_RATE = Character.getDouble("AltGameCreationXpRate", 1);
-			ALT_GAME_CREATION_SP_RATE = Character.getDouble("AltGameCreationSpRate", 1);
-			ALT_GAME_CREATION_RARE_XPSP_RATE = Character.getDouble("AltGameCreationRareXpSpRate", 2);
-			ALT_BLACKSMITH_USE_RECIPES = Character.getBoolean("AltBlacksmithUseRecipes", true);
-			ALT_CLAN_LEADER_DATE_CHANGE = Character.getInt("AltClanLeaderDateChange", 3);
+			ALT_ALLOW_AUGMENT_PVP_ITEMS = character.getBoolean("AltAllowAugmentPvPItems", false);
+			ALT_GAME_KARMA_PLAYER_CAN_BE_KILLED_IN_PEACEZONE = character.getBoolean("AltKarmaPlayerCanBeKilledInPeaceZone", false);
+			ALT_GAME_KARMA_PLAYER_CAN_SHOP = character.getBoolean("AltKarmaPlayerCanShop", true);
+			ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = character.getBoolean("AltKarmaPlayerCanTeleport", true);
+			ALT_GAME_KARMA_PLAYER_CAN_USE_GK = character.getBoolean("AltKarmaPlayerCanUseGK", false);
+			ALT_GAME_KARMA_PLAYER_CAN_TRADE = character.getBoolean("AltKarmaPlayerCanTrade", true);
+			ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = character.getBoolean("AltKarmaPlayerCanUseWareHouse", true);
+			MAX_PERSONAL_FAME_POINTS = character.getInt("MaxPersonalFamePoints", 100000);
+			FORTRESS_ZONE_FAME_TASK_FREQUENCY = character.getInt("FortressZoneFameTaskFrequency", 300);
+			FORTRESS_ZONE_FAME_AQUIRE_POINTS = character.getInt("FortressZoneFameAquirePoints", 31);
+			CASTLE_ZONE_FAME_TASK_FREQUENCY = character.getInt("CastleZoneFameTaskFrequency", 300);
+			CASTLE_ZONE_FAME_AQUIRE_POINTS = character.getInt("CastleZoneFameAquirePoints", 125);
+			FAME_FOR_DEAD_PLAYERS = character.getBoolean("FameForDeadPlayers", true);
+			IS_CRAFTING_ENABLED = character.getBoolean("CraftingEnabled", true);
+			CRAFT_MASTERWORK = character.getBoolean("CraftMasterwork", true);
+			DWARF_RECIPE_LIMIT = character.getInt("DwarfRecipeLimit", 50);
+			COMMON_RECIPE_LIMIT = character.getInt("CommonRecipeLimit", 50);
+			ALT_GAME_CREATION = character.getBoolean("AltGameCreation", false);
+			ALT_GAME_CREATION_SPEED = character.getDouble("AltGameCreationSpeed", 1);
+			ALT_GAME_CREATION_XP_RATE = character.getDouble("AltGameCreationXpRate", 1);
+			ALT_GAME_CREATION_SP_RATE = character.getDouble("AltGameCreationSpRate", 1);
+			ALT_GAME_CREATION_RARE_XPSP_RATE = character.getDouble("AltGameCreationRareXpSpRate", 2);
+			ALT_BLACKSMITH_USE_RECIPES = character.getBoolean("AltBlacksmithUseRecipes", true);
+			ALT_CLAN_LEADER_DATE_CHANGE = character.getInt("AltClanLeaderDateChange", 3);
 			if ((ALT_CLAN_LEADER_DATE_CHANGE < 1) || (ALT_CLAN_LEADER_DATE_CHANGE > 7))
 			{
-				_log.log(Level.WARNING, "Wrong value specified for AltClanLeaderDateChange: " + ALT_CLAN_LEADER_DATE_CHANGE);
+				_log.warn("Wrong value specified for AltClanLeaderDateChange: {}", ALT_CLAN_LEADER_DATE_CHANGE);
 				ALT_CLAN_LEADER_DATE_CHANGE = 3;
 			}
-			ALT_CLAN_LEADER_HOUR_CHANGE = Character.getString("AltClanLeaderHourChange", "00:00:00");
-			ALT_CLAN_LEADER_INSTANT_ACTIVATION = Character.getBoolean("AltClanLeaderInstantActivation", false);
-			ALT_CLAN_JOIN_DAYS = Character.getInt("DaysBeforeJoinAClan", 1);
-			ALT_CLAN_CREATE_DAYS = Character.getInt("DaysBeforeCreateAClan", 10);
-			ALT_CLAN_DISSOLVE_DAYS = Character.getInt("DaysToPassToDissolveAClan", 7);
-			ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = Character.getInt("DaysBeforeJoinAllyWhenLeaved", 1);
-			ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = Character.getInt("DaysBeforeJoinAllyWhenDismissed", 1);
-			ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = Character.getInt("DaysBeforeAcceptNewClanWhenDismissed", 1);
-			ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = Character.getInt("DaysBeforeCreateNewAllyWhenDissolved", 1);
-			ALT_MAX_NUM_OF_CLANS_IN_ALLY = Character.getInt("AltMaxNumOfClansInAlly", 3);
-			ALT_CLAN_MEMBERS_FOR_WAR = Character.getInt("AltClanMembersForWar", 15);
-			ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = Character.getBoolean("AltMembersCanWithdrawFromClanWH", false);
-			REMOVE_CASTLE_CIRCLETS = Character.getBoolean("RemoveCastleCirclets", true);
-			ALT_PARTY_RANGE = Character.getInt("AltPartyRange", 1600);
-			ALT_PARTY_RANGE2 = Character.getInt("AltPartyRange2", 1400);
-			ALT_LEAVE_PARTY_LEADER = Character.getBoolean("AltLeavePartyLeader", false);
-			INITIAL_EQUIPMENT_EVENT = Character.getBoolean("InitialEquipmentEvent", false);
-			STARTING_ADENA = Character.getLong("StartingAdena", 0);
-			STARTING_LEVEL = Character.getByte("StartingLevel", (byte) 1);
-			STARTING_SP = Character.getInt("StartingSP", 0);
-			MAX_ADENA = Character.getLong("MaxAdena", 99900000000L);
+			ALT_CLAN_LEADER_HOUR_CHANGE = character.getString("AltClanLeaderHourChange", "00:00:00");
+			ALT_CLAN_LEADER_INSTANT_ACTIVATION = character.getBoolean("AltClanLeaderInstantActivation", false);
+			ALT_CLAN_JOIN_DAYS = character.getInt("DaysBeforeJoinAClan", 1);
+			ALT_CLAN_CREATE_DAYS = character.getInt("DaysBeforeCreateAClan", 10);
+			ALT_CLAN_DISSOLVE_DAYS = character.getInt("DaysToPassToDissolveAClan", 7);
+			ALT_ALLY_JOIN_DAYS_WHEN_LEAVED = character.getInt("DaysBeforeJoinAllyWhenLeaved", 1);
+			ALT_ALLY_JOIN_DAYS_WHEN_DISMISSED = character.getInt("DaysBeforeJoinAllyWhenDismissed", 1);
+			ALT_ACCEPT_CLAN_DAYS_WHEN_DISMISSED = character.getInt("DaysBeforeAcceptNewClanWhenDismissed", 1);
+			ALT_CREATE_ALLY_DAYS_WHEN_DISSOLVED = character.getInt("DaysBeforeCreateNewAllyWhenDissolved", 1);
+			ALT_MAX_NUM_OF_CLANS_IN_ALLY = character.getInt("AltMaxNumOfClansInAlly", 3);
+			ALT_CLAN_MEMBERS_FOR_WAR = character.getInt("AltClanMembersForWar", 15);
+			ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH = character.getBoolean("AltMembersCanWithdrawFromClanWH", false);
+			REMOVE_CASTLE_CIRCLETS = character.getBoolean("RemoveCastleCirclets", true);
+			ALT_PARTY_RANGE = character.getInt("AltPartyRange", 1600);
+			ALT_PARTY_RANGE2 = character.getInt("AltPartyRange2", 1400);
+			ALT_LEAVE_PARTY_LEADER = character.getBoolean("AltLeavePartyLeader", false);
+			INITIAL_EQUIPMENT_EVENT = character.getBoolean("InitialEquipmentEvent", false);
+			STARTING_ADENA = character.getLong("StartingAdena", 0);
+			STARTING_LEVEL = character.getByte("StartingLevel", (byte) 1);
+			STARTING_SP = character.getInt("StartingSP", 0);
+			MAX_ADENA = character.getLong("MaxAdena", 99900000000L);
 			if (MAX_ADENA < 0)
 			{
 				MAX_ADENA = Long.MAX_VALUE;
 			}
-			AUTO_LOOT = Character.getBoolean("AutoLoot", false);
-			AUTO_LOOT_RAIDS = Character.getBoolean("AutoLootRaids", false);
-			LOOT_RAIDS_PRIVILEGE_INTERVAL = Character.getInt("RaidLootRightsInterval", 900) * 1000;
-			LOOT_RAIDS_PRIVILEGE_CC_SIZE = Character.getInt("RaidLootRightsCCSize", 45);
-			UNSTUCK_INTERVAL = Character.getInt("UnstuckInterval", 300);
-			TELEPORT_WATCHDOG_TIMEOUT = Character.getInt("TeleportWatchdogTimeout", 0);
-			PLAYER_SPAWN_PROTECTION = Character.getInt("PlayerSpawnProtection", 0);
-			String[] items = Character.getString("PlayerSpawnProtectionAllowedItems", "0").split(",");
+			AUTO_LOOT = character.getBoolean("AutoLoot", false);
+			AUTO_LOOT_RAIDS = character.getBoolean("AutoLootRaids", false);
+			LOOT_RAIDS_PRIVILEGE_INTERVAL = character.getInt("RaidLootRightsInterval", 900) * 1000;
+			LOOT_RAIDS_PRIVILEGE_CC_SIZE = character.getInt("RaidLootRightsCCSize", 45);
+			UNSTUCK_INTERVAL = character.getInt("UnstuckInterval", 300);
+			TELEPORT_WATCHDOG_TIMEOUT = character.getInt("TeleportWatchdogTimeout", 0);
+			PLAYER_SPAWN_PROTECTION = character.getInt("PlayerSpawnProtection", 0);
+			String[] items = character.getString("PlayerSpawnProtectionAllowedItems", "").split(",");
 			SPAWN_PROTECTION_ALLOWED_ITEMS = new ArrayList<>(items.length);
 			for (String item : items)
 			{
-				Integer itm = 0;
 				try
 				{
-					itm = Integer.parseInt(item);
+					if (!item.isEmpty())
+					{
+						SPAWN_PROTECTION_ALLOWED_ITEMS.add(Integer.parseInt(item));
+					}
 				}
 				catch (NumberFormatException nfe)
 				{
-					_log.warning("Player Spawn Protection: Wrong ItemId passed: " + item);
-					_log.warning(nfe.getMessage());
-				}
-				if (itm != 0)
-				{
-					SPAWN_PROTECTION_ALLOWED_ITEMS.add(itm);
+					_log.warn("Player Spawn Protection: Wrong Item ID passed: {}", item, nfe);
 				}
 			}
-			PLAYER_TELEPORT_PROTECTION = Character.getInt("PlayerTeleportProtection", 0);
-			RANDOM_RESPAWN_IN_TOWN_ENABLED = Character.getBoolean("RandomRespawnInTownEnabled", true);
-			OFFSET_ON_TELEPORT_ENABLED = Character.getBoolean("OffsetOnTeleportEnabled", true);
-			MAX_OFFSET_ON_TELEPORT = Character.getInt("MaxOffsetOnTeleport", 50);
-			PETITIONING_ALLOWED = Character.getBoolean("PetitioningAllowed", true);
-			MAX_PETITIONS_PER_PLAYER = Character.getInt("MaxPetitionsPerPlayer", 5);
-			MAX_PETITIONS_PENDING = Character.getInt("MaxPetitionsPending", 25);
-			ALT_GAME_FREE_TELEPORT = Character.getBoolean("AltFreeTeleporting", false);
-			DELETE_DAYS = Character.getInt("DeleteCharAfterDays", 7);
-			ALT_GAME_EXPONENT_XP = Character.getFloat("AltGameExponentXp", 0);
-			ALT_GAME_EXPONENT_SP = Character.getFloat("AltGameExponentSp", 0);
-			PARTY_XP_CUTOFF_METHOD = Character.getString("PartyXpCutoffMethod", "highfive");
-			PARTY_XP_CUTOFF_PERCENT = Character.getDouble("PartyXpCutoffPercent", 3);
-			PARTY_XP_CUTOFF_LEVEL = Character.getInt("PartyXpCutoffLevel", 20);
-			final String[] gaps = Character.getString("PartyXpCutoffGaps", "0,9;10,14;15,99").split(";");
+			
+			PLAYER_TELEPORT_PROTECTION = character.getInt("PlayerTeleportProtection", 0);
+			RANDOM_RESPAWN_IN_TOWN_ENABLED = character.getBoolean("RandomRespawnInTownEnabled", true);
+			OFFSET_ON_TELEPORT_ENABLED = character.getBoolean("OffsetOnTeleportEnabled", true);
+			MAX_OFFSET_ON_TELEPORT = character.getInt("MaxOffsetOnTeleport", 50);
+			PETITIONING_ALLOWED = character.getBoolean("PetitioningAllowed", true);
+			MAX_PETITIONS_PER_PLAYER = character.getInt("MaxPetitionsPerPlayer", 5);
+			MAX_PETITIONS_PENDING = character.getInt("MaxPetitionsPending", 25);
+			ALT_GAME_FREE_TELEPORT = character.getBoolean("AltFreeTeleporting", false);
+			DELETE_DAYS = character.getInt("DeleteCharAfterDays", 7);
+			ALT_GAME_EXPONENT_XP = character.getFloat("AltGameExponentXp", 0);
+			ALT_GAME_EXPONENT_SP = character.getFloat("AltGameExponentSp", 0);
+			PARTY_XP_CUTOFF_METHOD = character.getString("PartyXpCutoffMethod", "highfive");
+			PARTY_XP_CUTOFF_PERCENT = character.getDouble("PartyXpCutoffPercent", 3);
+			PARTY_XP_CUTOFF_LEVEL = character.getInt("PartyXpCutoffLevel", 20);
+			final String[] gaps = character.getString("PartyXpCutoffGaps", "0,9;10,14;15,99").split(";");
 			PARTY_XP_CUTOFF_GAPS = new int[gaps.length][2];
 			for (int i = 0; i < gaps.length; i++)
 			{
@@ -1678,20 +1676,20 @@ public final class Config
 					Integer.parseInt(gaps[i].split(",")[1])
 				};
 			}
-			final String[] percents = Character.getString("PartyXpCutoffGapPercent", "100;30;0").split(";");
+			final String[] percents = character.getString("PartyXpCutoffGapPercent", "100;30;0").split(";");
 			PARTY_XP_CUTOFF_GAP_PERCENTS = new int[percents.length];
 			for (int i = 0; i < percents.length; i++)
 			{
 				PARTY_XP_CUTOFF_GAP_PERCENTS[i] = Integer.parseInt(percents[i]);
 			}
-			DISABLE_TUTORIAL = Character.getBoolean("DisableTutorial", false);
-			EXPERTISE_PENALTY = Character.getBoolean("ExpertisePenalty", true);
-			STORE_RECIPE_SHOPLIST = Character.getBoolean("StoreRecipeShopList", false);
-			STORE_UI_SETTINGS = Character.getBoolean("StoreCharUiSettings", false);
-			FORBIDDEN_NAMES = Character.getString("ForbiddenNames", "").split(",");
-			SILENCE_MODE_EXCLUDE = Character.getBoolean("SilenceModeExclude", false);
-			ALT_VALIDATE_TRIGGER_SKILLS = Character.getBoolean("AltValidateTriggerSkills", false);
-			PLAYER_MOVEMENT_BLOCK_TIME = Character.getInt("NpcTalkBlockingTime", 0) * 1000;
+			DISABLE_TUTORIAL = character.getBoolean("DisableTutorial", false);
+			EXPERTISE_PENALTY = character.getBoolean("ExpertisePenalty", true);
+			STORE_RECIPE_SHOPLIST = character.getBoolean("StoreRecipeShopList", false);
+			STORE_UI_SETTINGS = character.getBoolean("StoreCharUiSettings", false);
+			FORBIDDEN_NAMES = character.getString("ForbiddenNames", "").split(",");
+			SILENCE_MODE_EXCLUDE = character.getBoolean("SilenceModeExclude", false);
+			ALT_VALIDATE_TRIGGER_SKILLS = character.getBoolean("AltValidateTriggerSkills", false);
+			PLAYER_MOVEMENT_BLOCK_TIME = character.getInt("NpcTalkBlockingTime", 0) * 1000;
 			
 			// Load Telnet L2Properties file (if exists)
 			final PropertiesParser telnetSettings = new PropertiesParser(TELNET_FILE);
@@ -1862,7 +1860,7 @@ public final class Config
 			}
 			catch (NumberFormatException nfe)
 			{
-				_log.log(Level.WARNING, nfe.getMessage(), nfe);
+				_log.warn("Unable to load banned channels!", nfe);
 			}
 			ALT_MANOR_REFRESH_TIME = General.getInt("AltManorRefreshTime", 20);
 			ALT_MANOR_REFRESH_MIN = General.getInt("AltManorRefreshMin", 0);
@@ -2009,7 +2007,7 @@ public final class Config
 				String[] propSplit = prop.split(",");
 				if (propSplit.length != 2)
 				{
-					_log.warning(StringUtil.concat("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"", prop, "\""));
+					_log.warn("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime {}", prop);
 				}
 				
 				try
@@ -2020,7 +2018,7 @@ public final class Config
 				{
 					if (!prop.isEmpty())
 					{
-						_log.warning(StringUtil.concat("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime \"", propSplit[0], "\"", propSplit[1]));
+						_log.warn("[CustomMinionsRespawnTime]: invalid config property -> CustomMinionsRespawnTime {}", prop);
 					}
 				}
 			}
@@ -2109,7 +2107,7 @@ public final class Config
 					String[] itemSplit = item.split(",");
 					if (itemSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+						_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 					}
 					else
 					{
@@ -2121,7 +2119,7 @@ public final class Config
 						{
 							if (!item.isEmpty())
 							{
-								_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+								_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 							}
 						}
 					}
@@ -2137,7 +2135,7 @@ public final class Config
 					String[] itemSplit = item.split(",");
 					if (itemSplit.length != 2)
 					{
-						_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+						_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 					}
 					else
 					{
@@ -2149,7 +2147,7 @@ public final class Config
 						{
 							if (!item.isEmpty())
 							{
-								_log.warning(StringUtil.concat("Config.load(): invalid config property -> RateDropItemsById \"", item, "\""));
+								_log.warn("Config.load(): invalid config property -> RateDropItemsById {}", item);
 							}
 						}
 					}
@@ -2202,7 +2200,7 @@ public final class Config
 			if (TVT_EVENT_PARTICIPATION_NPC_ID == 0)
 			{
 				TVT_EVENT_ENABLED = false;
-				_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId");
+				_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcId");
 			}
 			else
 			{
@@ -2210,7 +2208,7 @@ public final class Config
 				if (tvtNpcCoords.length < 3)
 				{
 					TVT_EVENT_ENABLED = false;
-					_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates");
+					_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationNpcCoordinates");
 				}
 				else
 				{
@@ -2241,7 +2239,7 @@ public final class Config
 					if (tvtNpcCoords.length < 3)
 					{
 						TVT_EVENT_ENABLED = false;
-						_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates");
+						_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam1Coordinates");
 					}
 					else
 					{
@@ -2253,7 +2251,7 @@ public final class Config
 						if (tvtNpcCoords.length < 3)
 						{
 							TVT_EVENT_ENABLED = false;
-							_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates");
+							_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventTeam2Coordinates");
 						}
 						else
 						{
@@ -2270,7 +2268,7 @@ public final class Config
 							{
 								if (tvtNpcCoords.length > 0)
 								{
-									_log.warning("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationFee");
+									_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventParticipationFee");
 								}
 							}
 							tvtNpcCoords = L2JModSettings.getString("TvTEventReward", "57,100000").split(";");
@@ -2279,7 +2277,7 @@ public final class Config
 								String[] rewardSplit = reward.split(",");
 								if (rewardSplit.length != 2)
 								{
-									_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
+									_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward {}", reward);
 								}
 								else
 								{
@@ -2295,7 +2293,7 @@ public final class Config
 									{
 										if (!reward.isEmpty())
 										{
-											_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward \"", reward, "\""));
+											_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventReward {}", reward);
 										}
 									}
 								}
@@ -2317,7 +2315,7 @@ public final class Config
 								{
 									if (!door.isEmpty())
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen \"", door, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToOpen {}", door);
 									}
 								}
 							}
@@ -2333,7 +2331,7 @@ public final class Config
 								{
 									if (!door.isEmpty())
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose \"", door, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTDoorsToClose {}", door);
 									}
 								}
 							}
@@ -2347,7 +2345,7 @@ public final class Config
 									String[] skillSplit = skill.split(",");
 									if (skillSplit.length != 2)
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"", skill, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs {}", skill);
 									}
 									else
 									{
@@ -2359,7 +2357,7 @@ public final class Config
 										{
 											if (!skill.isEmpty())
 											{
-												_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs \"", skill, "\""));
+												_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventFighterBuffs {}", skill);
 											}
 										}
 									}
@@ -2375,7 +2373,7 @@ public final class Config
 									String[] skillSplit = skill.split(",");
 									if (skillSplit.length != 2)
 									{
-										_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"", skill, "\""));
+										_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs {}", skill);
 									}
 									else
 									{
@@ -2387,7 +2385,7 @@ public final class Config
 										{
 											if (!skill.isEmpty())
 											{
-												_log.warning(StringUtil.concat("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs \"", skill, "\""));
+												_log.warn("TvTEventEngine[Config.load()]: invalid config property -> TvTEventMageBuffs {}", skill);
 											}
 										}
 									}
@@ -2443,7 +2441,7 @@ public final class Config
 			
 			if (!L2JMOD_MULTILANG_ALLOWED.contains(L2JMOD_MULTILANG_DEFAULT))
 			{
-				_log.warning("MultiLang[Config.load()]: default language: " + L2JMOD_MULTILANG_DEFAULT + " is not in allowed list !");
+				_log.warn("MultiLang[Config.load()]: default language: {} is not in allowed list !", L2JMOD_MULTILANG_DEFAULT);
 			}
 			
 			L2JMOD_HELLBOUND_STATUS = L2JModSettings.getBoolean("HellboundStatus", false);
@@ -2482,7 +2480,7 @@ public final class Config
 				String[] entrySplit = entry.split(",");
 				if (entrySplit.length != 2)
 				{
-					_log.warning(StringUtil.concat("DualboxCheck[Config.load()]: invalid config property -> DualboxCheckWhitelist \"", entry, "\""));
+					_log.warn("DualboxCheck[Config.load()]: invalid config property -> DualboxCheckWhitelist {}", entry);
 				}
 				else
 				{
@@ -2494,11 +2492,11 @@ public final class Config
 					}
 					catch (UnknownHostException e)
 					{
-						_log.warning(StringUtil.concat("DualboxCheck[Config.load()]: invalid address -> DualboxCheckWhitelist \"", entrySplit[0], "\""));
+						_log.warn("DualboxCheck[Config.load()]: invalid address -> DualboxCheckWhitelist {}", entrySplit[0]);
 					}
 					catch (NumberFormatException e)
 					{
-						_log.warning(StringUtil.concat("DualboxCheck[Config.load()]: invalid number -> DualboxCheckWhitelist \"", entrySplit[1], "\""));
+						_log.warn("DualboxCheck[Config.load()]: invalid number -> DualboxCheckWhitelist {}", entrySplit[1]);
 					}
 				}
 			}
@@ -2597,17 +2595,17 @@ public final class Config
 					}
 					catch (Exception e)
 					{
-						_log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one.");
+						_log.warn("Could not load HexID file ({}). Hopefully login will give us one.", HEXID_FILE);
 					}
 				}
 				else
 				{
-					_log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one.");
+					_log.warn("Could not load HexID file ({}). Hopefully login will give us one.", HEXID_FILE);
 				}
 			}
 			else
 			{
-				_log.warning("Could not load HexID file (" + HEXID_FILE + "). Hopefully login will give us one.");
+				_log.warn("Could not load HexID file ({}). Hopefully login will give us one.", HEXID_FILE);
 			}
 			
 			// Grand bosses
@@ -2652,11 +2650,11 @@ public final class Config
 					.filter(line -> (!line.isEmpty() && (line.charAt(0) != '#')))
 					.collect(Collectors.toList());
 				//@formatter:on
-				_log.info("Loaded " + FILTER_LIST.size() + " Filter Words.");
+				_log.info("Loaded {} filter words.", FILTER_LIST.size());
 			}
 			catch (IOException ioe)
 			{
-				_log.log(Level.WARNING, "Error while loading chat filter words!", ioe);
+				_log.warn("Error while loading chat filter words!", ioe);
 			}
 			
 			final PropertiesParser ClanHallSiege = new PropertiesParser(CH_SIEGE_FILE);
@@ -2676,7 +2674,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				_log.log(Level.WARNING, "Error setting pathnode directory!", e);
+				_log.warn("Error setting pathnode directory!", e);
 				PATHNODE_DIR = new File("data/pathnode");
 			}
 			
@@ -2723,7 +2721,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				_log.log(Level.WARNING, "Error setting datapack root!", e);
+				_log.warn("Error setting datapack root!", e);
 				DATAPACK_ROOT = new File(".");
 			}
 			
@@ -2790,7 +2788,7 @@ public final class Config
 		}
 		else
 		{
-			_log.severe("Could not Load Config: server mode was not set!");
+			_log.error("Could not Load Config: server mode was not set!");
 		}
 	}
 	
@@ -3626,7 +3624,7 @@ public final class Config
 				}
 				catch (Exception e)
 				{
-					_log.log(Level.WARNING, "", e);
+					_log.warn("Unable to set parameter value!", e);
 					return false;
 				}
 		}
@@ -3667,8 +3665,7 @@ public final class Config
 		}
 		catch (Exception e)
 		{
-			_log.warning(StringUtil.concat("Failed to save hex id to ", fileName, " File."));
-			_log.warning("Config: " + e.getMessage());
+			_log.warn("Failed to save hex id to {} file.", fileName, e);
 		}
 	}
 	
@@ -3870,7 +3867,7 @@ public final class Config
 			valueSplit = value.split(",");
 			if (valueSplit.length != 2)
 			{
-				_log.warning(StringUtil.concat("parseItemsList[Config.load()]: invalid entry -> \"", valueSplit[0], "\", should be itemId,itemNumber. Skipping to the next entry in the list."));
+				_log.warn("parseItemsList[Config.load()]: invalid entry -> {}, should be itemId,itemNumber. Skipping to the next entry in the list.", valueSplit[0]);
 				continue;
 			}
 			
@@ -3881,7 +3878,7 @@ public final class Config
 			}
 			catch (NumberFormatException e)
 			{
-				_log.warning(StringUtil.concat("parseItemsList[Config.load()]: invalid itemId -> \"", valueSplit[0], "\", value must be an integer. Skipping to the next entry in the list."));
+				_log.warn("parseItemsList[Config.load()]: invalid itemId -> {}, value must be an integer. Skipping to the next entry in the list.", valueSplit[0]);
 				continue;
 			}
 			try
@@ -3890,7 +3887,7 @@ public final class Config
 			}
 			catch (NumberFormatException e)
 			{
-				_log.warning(StringUtil.concat("parseItemsList[Config.load()]: invalid item number -> \"", valueSplit[1], "\", value must be an integer. Skipping to the next entry in the list."));
+				_log.warn("parseItemsList[Config.load()]: invalid item number -> {}, value must be an integer. Skipping to the next entry in the list.", valueSplit[1]);
 				continue;
 			}
 			result[i++] = tmp;
@@ -3914,13 +3911,13 @@ public final class Config
 			File f = new File(IP_CONFIG_FILE);
 			if (f.exists())
 			{
-				LOGGER.log(Level.INFO, "Network Config: ipconfig.xml exists using manual configuration...");
+				LOGGER.info("Network Config: ipconfig.xml exists using manual configuration...");
 				parseFile(new File(IP_CONFIG_FILE));
 			}
 			else
 			// Auto configuration...
 			{
-				LOGGER.log(Level.INFO, "Network Config: ipconfig.xml doesn't exists using automatic configuration...");
+				LOGGER.info("Network Config: ipconfig.xml doesn't exists using automatic configuration...");
 				autoIpConfig();
 			}
 		}
@@ -3943,7 +3940,7 @@ public final class Config
 							
 							if (_hosts.size() != _subnets.size())
 							{
-								LOGGER.log(Level.WARNING, "Failed to Load " + IP_CONFIG_FILE + " File - subnets does not match server addresses.");
+								LOGGER.warn("Failed to load {} file - subnets does not match server addresses.", IP_CONFIG_FILE);
 							}
 						}
 					}
@@ -3951,7 +3948,7 @@ public final class Config
 					Node att = n.getAttributes().getNamedItem("address");
 					if (att == null)
 					{
-						LOGGER.log(Level.WARNING, "Failed to load " + IP_CONFIG_FILE + " file - default server address is missing.");
+						LOGGER.warn("Failed to load {} file - default server address is missing.", IP_CONFIG_FILE);
 						_hosts.add("127.0.0.1");
 					}
 					else
@@ -3976,7 +3973,7 @@ public final class Config
 			}
 			catch (IOException e)
 			{
-				LOGGER.log(Level.INFO, "Network Config: Failed to connect to api.externalip.net please check your internet connection using 127.0.0.1!");
+				LOGGER.info("Network Config: Failed to connect to api.externalip.net please check your internet connection using 127.0.0.1!");
 				externalIp = "127.0.0.1";
 			}
 			
@@ -4016,7 +4013,7 @@ public final class Config
 						{
 							_subnets.add(subnet);
 							_hosts.add(hostAddress);
-							LOGGER.log(Level.INFO, "Network Config: Adding new subnet: " + subnet + " address: " + hostAddress);
+							LOGGER.info("Network Config: Adding new subnet: " + subnet + " address: " + hostAddress);
 						}
 					}
 				}
@@ -4024,11 +4021,11 @@ public final class Config
 				// External host and subnet
 				_hosts.add(externalIp);
 				_subnets.add("0.0.0.0/0");
-				LOGGER.log(Level.INFO, "Network Config: Adding new subnet: 0.0.0.0/0 address: " + externalIp);
+				LOGGER.info("Network Config: Adding new subnet: 0.0.0.0/0 address: {}", externalIp);
 			}
 			catch (SocketException e)
 			{
-				LOGGER.log(Level.INFO, "Network Config: Configuration failed please configure manually using ipconfig.xml", e);
+				LOGGER.warn("Network Config: Configuration failed please configure manually using ipconfig.xml", e);
 				System.exit(0);
 			}
 		}

+ 13 - 13
L2J_Server/java/com/l2jserver/UPnPService.java

@@ -21,12 +21,12 @@ package com.l2jserver;
 import java.io.IOException;
 import java.net.InetAddress;
 import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.bitlet.weupnp.GatewayDevice;
 import org.bitlet.weupnp.GatewayDiscover;
 import org.bitlet.weupnp.PortMappingEntry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
 
 /**
@@ -34,7 +34,7 @@ import org.xml.sax.SAXException;
  */
 public class UPnPService
 {
-	private static final Logger _log = Logger.getLogger(UPnPService.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(UPnPService.class);
 	private static final String PROTOCOL = "TCP";
 	
 	private final GatewayDiscover _gatewayDiscover = new GatewayDiscover();
@@ -48,7 +48,7 @@ public class UPnPService
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, getClass().getSimpleName() + ": error while initializing: ", e);
+			_log.warn("{}: There was a problem while initializing the UPnP Service!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -56,16 +56,16 @@ public class UPnPService
 	{
 		if (!Config.ENABLE_UPNP)
 		{
-			_log.log(Level.WARNING, "UPnP Service is disabled.");
+			_log.info("UPnP Service is disabled.");
 			return;
 		}
 		
-		_log.log(Level.INFO, "Looking for UPnP Gateway Devices...");
+		_log.info("Looking for UPnP Gateway Devices...");
 		
 		final Map<InetAddress, GatewayDevice> gateways = _gatewayDiscover.discover();
 		if (gateways.isEmpty())
 		{
-			_log.log(Level.INFO, "No UPnP gateways found");
+			_log.info("No UPnP gateways found.");
 			return;
 		}
 		
@@ -73,15 +73,15 @@ public class UPnPService
 		_activeGW = _gatewayDiscover.getValidGateway();
 		if (_activeGW != null)
 		{
-			_log.log(Level.INFO, "Using UPnP gateway: " + _activeGW.getFriendlyName());
+			_log.info("Using UPnP gateway: {}", _activeGW.getFriendlyName());
 		}
 		else
 		{
-			_log.log(Level.INFO, "No active UPnP gateway found");
+			_log.info("No active UPnP gateway found.");
 			return;
 		}
 		
-		_log.log(Level.INFO, "Using local address: " + _activeGW.getLocalAddress().getHostAddress() + " External address: " + _activeGW.getExternalIPAddress());
+		_log.info("Using local address: {} External address: {}", _activeGW.getLocalAddress().getHostAddress(), _activeGW.getExternalIPAddress());
 		
 		if (Server.serverMode == Server.MODE_GAMESERVER)
 		{
@@ -121,11 +121,11 @@ public class UPnPService
 		
 		if (_activeGW.addPortMapping(port, port, localAddress.getHostAddress(), PROTOCOL, description))
 		{
-			_log.log(Level.INFO, "Mapping successfull on [" + localAddress.getHostAddress() + ":" + port + "]");
+			_log.info("Mapping successfull on ", localAddress.getHostAddress(), port);
 		}
 		else
 		{
-			_log.log(Level.INFO, "Mapping failed on [" + localAddress.getHostAddress() + ":" + port + "] - Already mapped?");
+			_log.info("Mapping failed on [{}:{}] - Already mapped?", localAddress.getHostAddress(), port);
 		}
 	}
 	
@@ -133,7 +133,7 @@ public class UPnPService
 	{
 		if (_activeGW.deletePortMapping(port, PROTOCOL))
 		{
-			_log.log(Level.INFO, "Mapping was deleted from [" + _activeGW.getLocalAddress().getHostAddress() + ":" + port + "]");
+			_log.info("Mapping was deleted from [{}:{}]", _activeGW.getLocalAddress().getHostAddress(), port);
 		}
 	}
 	

+ 5 - 3
L2J_Server/java/com/l2jserver/commons/database/pool/AbstractConnectionFactory.java

@@ -20,7 +20,9 @@ package com.l2jserver.commons.database.pool;
 
 import java.sql.Connection;
 import java.sql.SQLException;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Abstract Connection Factory.
@@ -29,7 +31,7 @@ import java.util.logging.Logger;
 public abstract class AbstractConnectionFactory implements IConnectionFactory
 {
 	/** The logger. */
-	protected static final Logger LOG = Logger.getLogger(AbstractConnectionFactory.class.getName());
+	protected static final Logger LOG = LoggerFactory.getLogger(AbstractConnectionFactory.class);
 	
 	@Override
 	public Connection getConnection()
@@ -43,7 +45,7 @@ public abstract class AbstractConnectionFactory implements IConnectionFactory
 			}
 			catch (SQLException e)
 			{
-				LOG.warning(getClass().getSimpleName() + ": Unable to get a connection: " + e.getMessage());
+				LOG.warn("{}: Unable to get a connection!", getClass().getSimpleName(), e);
 			}
 		}
 		return con;

+ 1 - 1
L2J_Server/java/com/l2jserver/commons/database/pool/impl/BoneCPConnectionFactory.java

@@ -35,7 +35,7 @@ final class BoneCPConnectionFactory extends AbstractConnectionFactory
 	
 	public BoneCPConnectionFactory()
 	{
-		LOG.severe("BoneCP is not supported yet, nothing is going to work!");
+		LOG.error("BoneCP is not supported yet, nothing is going to work!");
 	}
 	
 	@Override

+ 5 - 10
L2J_Server/java/com/l2jserver/commons/database/pool/impl/C3P0ConnectionFactory.java

@@ -43,7 +43,7 @@ final class C3P0ConnectionFactory extends AbstractConnectionFactory
 		if (Config.DATABASE_MAX_CONNECTIONS < 2)
 		{
 			Config.DATABASE_MAX_CONNECTIONS = 2;
-			LOG.warning("A minimum of " + Config.DATABASE_MAX_CONNECTIONS + " db connections are required.");
+			LOG.warn("A minimum of {} database connections are required.", Config.DATABASE_MAX_CONNECTIONS);
 		}
 		
 		_dataSource = new ComboPooledDataSource();
@@ -88,8 +88,7 @@ final class C3P0ConnectionFactory extends AbstractConnectionFactory
 		}
 		catch (PropertyVetoException e)
 		{
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+			LOG.error("There has been a problem setting the driver class!", e);
 		}
 		_dataSource.setJdbcUrl(Config.DATABASE_URL);
 		_dataSource.setUser(Config.DATABASE_LOGIN);
@@ -102,14 +101,10 @@ final class C3P0ConnectionFactory extends AbstractConnectionFactory
 		}
 		catch (SQLException e)
 		{
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+			LOG.warn("There has been a problem closing the test connection!", e);
 		}
 		
-		if (Config.DEBUG)
-		{
-			LOG.fine("Database Connection Working");
-		}
+		LOG.debug("Database connection working.");
 	}
 	
 	@Override
@@ -121,7 +116,7 @@ final class C3P0ConnectionFactory extends AbstractConnectionFactory
 		}
 		catch (Exception e)
 		{
-			LOG.info(e.getMessage());
+			LOG.warn("There has been a problem closing the data source!", e);
 		}
 	}
 	

+ 1 - 1
L2J_Server/java/com/l2jserver/commons/database/pool/impl/HikariCPConnectionFactory.java

@@ -54,7 +54,7 @@ final class HikariCPConnectionFactory extends AbstractConnectionFactory
 		}
 		catch (Exception e)
 		{
-			LOG.info(e.getMessage());
+			LOG.warn("There has been a problem closing the data source!", e);
 		}
 	}
 	

+ 8 - 4
L2J_Server/java/com/l2jserver/gameserver/FortUpdater.java

@@ -18,8 +18,8 @@
  */
 package com.l2jserver.gameserver;
 
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.model.L2Clan;
@@ -32,7 +32,7 @@ import com.l2jserver.gameserver.model.itemcontainer.Inventory;
  */
 public class FortUpdater implements Runnable
 {
-	protected static Logger _log = Logger.getLogger(FortUpdater.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(FortUpdater.class);
 	private final L2Clan _clan;
 	private final Fort _fort;
 	private int _runCount;
@@ -60,6 +60,7 @@ public class FortUpdater implements Runnable
 			switch (_updaterType)
 			{
 				case PERIODIC_UPDATE:
+				{
 					_runCount++;
 					if ((_fort.getOwnerClan() == null) || (_fort.getOwnerClan() != _clan))
 					{
@@ -83,7 +84,9 @@ public class FortUpdater implements Runnable
 					}
 					_fort.saveFortVariables();
 					break;
+				}
 				case MAX_OWN_TIME:
+				{
 					if ((_fort.getOwnerClan() == null) || (_fort.getOwnerClan() != _clan))
 					{
 						return;
@@ -94,11 +97,12 @@ public class FortUpdater implements Runnable
 						_fort.setFortState(0, 0);
 					}
 					break;
+				}
 			}
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "", e);
+			_log.error("There has been a problem updating forts!", e);
 		}
 	}
 	

+ 19 - 17
L2J_Server/java/com/l2jserver/gameserver/GameServer.java

@@ -26,9 +26,11 @@ import java.io.InputStream;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.Calendar;
-import java.util.logging.Level;
+import java.util.concurrent.TimeUnit;
 import java.util.logging.LogManager;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.Server;
@@ -143,7 +145,7 @@ import com.l2jserver.util.IPv4Filter;
 
 public final class GameServer
 {
-	private static final Logger _log = Logger.getLogger(GameServer.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(GameServer.class);
 	
 	private final SelectorThread<L2GameClient> _selectorThread;
 	private final L2GamePacketHandler _gamePacketHandler;
@@ -175,12 +177,12 @@ public final class GameServer
 	{
 		long serverLoadStart = System.currentTimeMillis();
 		
-		_log.info(getClass().getSimpleName() + ": Used memory: " + getUsedMemoryMB() + "MB");
+		_log.info("{}: Used memory: {}MB.", getClass().getSimpleName(), getUsedMemoryMB());
 		
 		if (!IdFactory.getInstance().isInitialized())
 		{
-			_log.severe(getClass().getSimpleName() + ": Could not read object IDs from DB. Please check your data.");
-			throw new Exception("Could not initialize the ID factory");
+			_log.error("{}: Could not read object IDs from DB. Please check your data.", getClass().getSimpleName());
+			throw new Exception("Could not initialize the ID factory!");
 		}
 		
 		ThreadPoolManager.getInstance();
@@ -300,7 +302,7 @@ public final class GameServer
 		
 		try
 		{
-			_log.info(getClass().getSimpleName() + ": Loading server scripts:");
+			_log.info("{}: Loading server scripts:", getClass().getSimpleName());
 			if (!Config.ALT_DEV_NO_HANDLERS || !Config.ALT_DEV_NO_QUESTS)
 			{
 				L2ScriptEngineManager.getInstance().executeScriptList(new File(Config.DATAPACK_ROOT, "data/scripts.cfg"));
@@ -308,7 +310,7 @@ public final class GameServer
 		}
 		catch (IOException ioe)
 		{
-			_log.severe(getClass().getSimpleName() + ": Failed loading scripts.cfg, scripts are not going to be loaded!");
+			_log.error("{}: Failed loading scripts.cfg, scripts are not going to be loaded!", getClass().getSimpleName());
 		}
 		
 		SpawnTable.getInstance().load();
@@ -351,7 +353,7 @@ public final class GameServer
 		FaenorScriptEngine.getInstance();
 		// Init of a cursed weapon manager
 		
-		_log.info("AutoSpawnHandler: Loaded " + AutoSpawnHandler.getInstance().size() + " handlers in total.");
+		_log.info("AutoSpawnHandler: Loaded {} handlers in total.", AutoSpawnHandler.getInstance().size());
 		
 		if (Config.L2JMOD_ALLOW_WEDDING)
 		{
@@ -371,7 +373,7 @@ public final class GameServer
 		
 		Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
 		
-		_log.info("IdFactory: Free ObjectID's remaining: " + IdFactory.getInstance().size());
+		_log.info("IdFactory: Free ObjectID's remaining: {}", IdFactory.getInstance().size());
 		
 		TvTManager.getInstance();
 		KnownListUpdateTaskManager.getInstance();
@@ -396,7 +398,7 @@ public final class GameServer
 		// the current allocation pool, freeMemory the unused memory in the allocation pool
 		long freeMem = ((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().totalMemory()) + Runtime.getRuntime().freeMemory()) / 1048576;
 		long totalMem = Runtime.getRuntime().maxMemory() / 1048576;
-		_log.info(getClass().getSimpleName() + ": Started, free memory " + freeMem + " Mb of " + totalMem + " Mb");
+		_log.info("{}: Started, free memory {} Mb of {} Mb", getClass().getSimpleName(), freeMem, totalMem);
 		Toolkit.getDefaultToolkit().beep();
 		LoginServerThread.getInstance().start();
 		
@@ -419,7 +421,7 @@ public final class GameServer
 			}
 			catch (UnknownHostException e1)
 			{
-				_log.log(Level.SEVERE, getClass().getSimpleName() + ": WARNING: The GameServer bind address is invalid, using all avaliable IPs. Reason: " + e1.getMessage(), e1);
+				_log.error("{}: The GameServer bind address is invalid, using all avaliable IPs!", getClass().getSimpleName(), e1);
 			}
 		}
 		
@@ -427,16 +429,16 @@ public final class GameServer
 		{
 			_selectorThread.openServerSocket(bindAddress, Config.PORT_GAME);
 			_selectorThread.start();
-			_log.log(Level.INFO, getClass().getSimpleName() + ": is now listening on: " + Config.GAMESERVER_HOSTNAME + ":" + Config.PORT_GAME);
+			_log.info("{}: is now listening on: {}:{}", getClass().getSimpleName(), Config.GAMESERVER_HOSTNAME, Config.PORT_GAME);
 		}
 		catch (IOException e)
 		{
-			_log.log(Level.SEVERE, getClass().getSimpleName() + ": FATAL: Failed to open server socket. Reason: " + e.getMessage(), e);
+			_log.error("{}: Failed to open server socket!", getClass().getSimpleName(), e);
 			System.exit(1);
 		}
 		
-		_log.log(Level.INFO, getClass().getSimpleName() + ": Maximum numbers of connected players: " + Config.MAXIMUM_ONLINE_USERS);
-		_log.log(Level.INFO, getClass().getSimpleName() + ": Server loaded in " + ((System.currentTimeMillis() - serverLoadStart) / 1000) + " seconds.");
+		_log.info("{}: Maximum numbers of connected players: {}", getClass().getSimpleName(), Config.MAXIMUM_ONLINE_USERS);
+		_log.info("{}: Server loaded in {} seconds.", getClass().getSimpleName(), TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - serverLoadStart));
 		
 		printSection("UPnP");
 		UPnPService.getInstance();
@@ -472,7 +474,7 @@ public final class GameServer
 		}
 		else
 		{
-			_log.info(GameServer.class.getSimpleName() + ": Telnet server is currently disabled.");
+			_log.info("{}: Telnet server is currently disabled.", GameServer.class.getSimpleName());
 		}
 	}
 	

+ 7 - 6
L2J_Server/java/com/l2jserver/gameserver/GameTimeController.java

@@ -21,8 +21,9 @@ package com.l2jserver.gameserver;
 import java.util.Calendar;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.gameserver.instancemanager.DayNightSpawnManager;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -33,7 +34,7 @@ import com.l2jserver.gameserver.model.actor.L2Character;
  */
 public final class GameTimeController extends Thread
 {
-	private static final Logger _log = Logger.getLogger(GameTimeController.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(GameTimeController.class);
 	
 	public static final int TICKS_PER_SECOND = 10; // not able to change this without checking through code
 	public static final int MILLIS_IN_TICK = 1000 / TICKS_PER_SECOND;
@@ -132,13 +133,13 @@ public final class GameTimeController extends Thread
 	public final void stopTimer()
 	{
 		super.interrupt();
-		_log.log(Level.INFO, "Stopping " + getClass().getSimpleName());
+		_log.info("Stopping {}", getClass().getSimpleName());
 	}
 	
 	@Override
 	public final void run()
 	{
-		_log.log(Level.CONFIG, getClass().getSimpleName() + ": Started.");
+		_log.debug("{}: Started.", getClass().getSimpleName());
 		
 		long nextTickTime, sleepTime;
 		boolean isNight = isNight();
@@ -158,7 +159,7 @@ public final class GameTimeController extends Thread
 			}
 			catch (final Throwable e)
 			{
-				_log.log(Level.WARNING, "", e);
+				_log.warn("Unable to move objects!", e);
 			}
 			
 			sleepTime = nextTickTime - System.currentTimeMillis();

+ 10 - 8
L2J_Server/java/com/l2jserver/gameserver/GeoData.java

@@ -20,8 +20,9 @@ package com.l2jserver.gameserver;
 
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.data.xml.impl.DoorData;
@@ -36,11 +37,12 @@ import com.l2jserver.geodriver.Cell;
 import com.l2jserver.geodriver.GeoDriver;
 
 /**
+ * Geodata.
  * @author -Nemesiss-, HorridoJoho
  */
 public class GeoData
 {
-	private static final Logger LOGGER = Logger.getLogger(GeoData.class.getName());
+	private static final Logger LOGGER = LoggerFactory.getLogger(GeoData.class);
 	private static final String FILE_NAME_FORMAT = "%d_%d.l2j";
 	private static final int ELEVATED_SEE_OVER_DISTANCE = 2;
 	private static final int MAX_SEE_OVER_HEIGHT = 48;
@@ -63,7 +65,7 @@ public class GeoData
 					{
 						if (loadFile)
 						{
-							LOGGER.info(getClass().getSimpleName() + ": Loading " + geoFilePath.getFileName() + "...");
+							LOGGER.info("{}: Loading {}...", getClass().getSimpleName(), geoFilePath.getFileName());
 							_driver.loadRegion(geoFilePath, regionX, regionY);
 							loadedRegions++;
 						}
@@ -72,13 +74,13 @@ public class GeoData
 					{
 						try
 						{
-							LOGGER.info(getClass().getSimpleName() + ": Loading " + geoFilePath.getFileName() + "...");
+							LOGGER.info("{}: Loading {}...", getClass().getSimpleName(), geoFilePath.getFileName());
 							_driver.loadRegion(geoFilePath, regionX, regionY);
 							loadedRegions++;
 						}
 						catch (Exception e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Failed to load " + geoFilePath.getFileName() + "!", e);
+							LOGGER.warn("{}: Failed to load {}!", getClass().getSimpleName(), geoFilePath.getFileName(), e);
 						}
 					}
 				}
@@ -86,11 +88,11 @@ public class GeoData
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.SEVERE, getClass().getSimpleName() + ": Failed to load geodata!", e);
+			LOGGER.error("{}: Failed to load geodata!", e);
 			System.exit(1);
 		}
 		
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + loadedRegions + " regions.");
+		LOGGER.info("{}: Loaded {} regions.", getClass().getSimpleName(), loadedRegions);
 	}
 	
 	public boolean hasGeoPos(int geoX, int geoY)

+ 30 - 35
L2J_Server/java/com/l2jserver/gameserver/LoginServerThread.java

@@ -40,9 +40,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
@@ -80,8 +80,8 @@ import com.l2jserver.util.network.BaseSendablePacket;
 
 public class LoginServerThread extends Thread
 {
-	protected static final Logger _log = Logger.getLogger(LoginServerThread.class.getName());
-	protected static final Logger _logAccounting = Logger.getLogger("accounting");
+	protected static final Logger _log = LoggerFactory.getLogger(LoginServerThread.class);
+	protected static final Logger _logAccounting = LoggerFactory.getLogger("accounting");
 	
 	/** @see com.l2jserver.loginserver.L2LoginServer#PROTOCOL_REV */
 	private static final int REVISION = 0x0106;
@@ -140,15 +140,6 @@ public class LoginServerThread extends Thread
 		_maxPlayer = Config.MAXIMUM_ONLINE_USERS;
 	}
 	
-	/**
-	 * Gets the single instance of LoginServerThread.
-	 * @return single instance of LoginServerThread
-	 */
-	public static LoginServerThread getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
 	@Override
 	public void run()
 	{
@@ -161,7 +152,7 @@ public class LoginServerThread extends Thread
 			try
 			{
 				// Connection
-				_log.info("Connecting to login on " + _hostname + ":" + _port);
+				_log.info("Connecting to login on {}:{}", _hostname, _port);
 				_loginSocket = new Socket(_hostname, _port);
 				InputStream in = _loginSocket.getInputStream();
 				_out = new BufferedOutputStream(_loginSocket.getOutputStream());
@@ -182,7 +173,7 @@ public class LoginServerThread extends Thread
 					
 					if (lengthHi < 0)
 					{
-						_log.finer("LoginServerThread: Login terminated the connection.");
+						_log.info("LoginServerThread: Login terminated the connection.");
 						break;
 					}
 					
@@ -200,7 +191,7 @@ public class LoginServerThread extends Thread
 					
 					if (receivedBytes != (length - 2))
 					{
-						_log.warning("Incomplete Packet is sent to the server, closing connection.(LS)");
+						_log.warn("Incomplete Packet is sent to the server, closing connection.(LS)");
 						break;
 					}
 					
@@ -210,7 +201,7 @@ public class LoginServerThread extends Thread
 					
 					if (!checksumOk)
 					{
-						_log.warning("Incorrect packet checksum, ignoring packet (LS)");
+						_log.warn("Incorrect packet checksum, ignoring packet (LS)");
 						break;
 					}
 					
@@ -222,7 +213,7 @@ public class LoginServerThread extends Thread
 							if (init.getRevision() != REVISION)
 							{
 								// TODO: revision mismatch
-								_log.warning("/!\\ Revision mismatch between LS and GS /!\\");
+								_log.warn("/!\\ Revision mismatch between LS and GS /!\\");
 								break;
 							}
 							
@@ -237,7 +228,7 @@ public class LoginServerThread extends Thread
 							}
 							catch (GeneralSecurityException e)
 							{
-								_log.warning("Trouble while init the public key send by login");
+								_log.warn("Trouble while init the public key send by login");
 								break;
 							}
 							// send the blowfish key through the rsa encryption
@@ -248,7 +239,7 @@ public class LoginServerThread extends Thread
 							break;
 						case 0x01:
 							LoginServerFail lsf = new LoginServerFail(incoming);
-							_log.info("Damn! Registeration Failed: " + lsf.getReasonString());
+							_log.info("Damn! Registeration Failed: {}", lsf.getReasonString());
 							// login will close the connection here
 							break;
 						case 0x02:
@@ -256,7 +247,7 @@ public class LoginServerThread extends Thread
 							int serverID = aresp.getServerId();
 							_serverName = aresp.getServerName();
 							Config.saveHexid(serverID, hexToString(_hexID));
-							_log.info("Registered on login as Server " + serverID + " : " + _serverName);
+							_log.info("Registered on login as Server {}: {}", serverID, _serverName);
 							ServerStatus st = new ServerStatus();
 							if (Config.SERVER_LIST_BRACKET)
 							{
@@ -326,7 +317,7 @@ public class LoginServerThread extends Thread
 								}
 								else
 								{
-									_log.warning("Session key is not correct. Closing connection for account " + wcToRemove.account + ".");
+									_log.warn("Session key is not correct. Closing connection for account {}.", wcToRemove.account);
 									// wcToRemove.gameClient.getConnection().sendPacket(new LoginFail(LoginFail.SYSTEM_ERROR_LOGIN_LATER));
 									wcToRemove.gameClient.close(new LoginFail(LoginFail.SYSTEM_ERROR_LOGIN_LATER));
 									_accountsInGameServer.remove(wcToRemove.account);
@@ -350,15 +341,15 @@ public class LoginServerThread extends Thread
 			}
 			catch (UnknownHostException e)
 			{
-				_log.log(Level.WARNING, "", e);
+				_log.warn("Unknown host!", e);
 			}
 			catch (SocketException e)
 			{
-				_log.warning("LoginServer not avaible, trying to reconnect...");
+				_log.warn("LoginServer not avaible, trying to reconnect...");
 			}
 			catch (IOException e)
 			{
-				_log.log(Level.WARNING, "Disconnected from Login, Trying to reconnect: " + e.getMessage(), e);
+				_log.warn("Disconnected from Login, Trying to reconnect!", e);
 			}
 			finally
 			{
@@ -406,7 +397,7 @@ public class LoginServerThread extends Thread
 		}
 		catch (IOException e)
 		{
-			_log.warning("Error while sending player auth request");
+			_log.warn("Error while sending player auth request!");
 		}
 	}
 	
@@ -450,7 +441,7 @@ public class LoginServerThread extends Thread
 		}
 		catch (IOException e)
 		{
-			_log.warning("Error while sending logout packet to login");
+			_log.warn("Error while sending logout packet to login!");
 		}
 		finally
 		{
@@ -558,12 +549,7 @@ public class LoginServerThread extends Thread
 		L2GameClient client = _accountsInGameServer.get(account);
 		if (client != null)
 		{
-			LogRecord record = new LogRecord(Level.WARNING, "Kicked by login");
-			record.setParameters(new Object[]
-			{
-				client
-			});
-			_logAccounting.log(record);
+			_logAccounting.warn("Kicked by login: {}", client);
 			client.setAditionalClosePacket(SystemMessage.getSystemMessage(SystemMessageId.ANOTHER_LOGIN_WITH_ACCOUNT));
 			client.closeNow();
 		}
@@ -597,7 +583,7 @@ public class LoginServerThread extends Thread
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.WARNING, "Exception: getCharsOnServer: " + e.getMessage(), e);
+			_log.warn("Exception: getCharsOnServer!", e);
 		}
 		
 		ReplyCharacters rec = new ReplyCharacters(account, chars, charToDel);
@@ -812,6 +798,15 @@ public class LoginServerThread extends Thread
 		}
 	}
 	
+	/**
+	 * Gets the single instance of LoginServerThread.
+	 * @return single instance of LoginServerThread
+	 */
+	public static LoginServerThread getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final LoginServerThread _instance = new LoginServerThread();

+ 5 - 5
L2J_Server/java/com/l2jserver/gameserver/MonsterRace.java

@@ -19,8 +19,9 @@
 package com.l2jserver.gameserver;
 
 import java.lang.reflect.Constructor;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.gameserver.data.xml.impl.NpcData;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -29,7 +30,7 @@ import com.l2jserver.util.Rnd;
 
 public class MonsterRace
 {
-	protected static final Logger _log = Logger.getLogger(MonsterRace.class.getName());
+	protected static final Logger _log = LoggerFactory.getLogger(MonsterRace.class);
 	
 	private final L2Npc[] _monsters;
 	private int[][] _speeds;
@@ -76,9 +77,8 @@ public class MonsterRace
 			}
 			catch (Exception e)
 			{
-				_log.log(Level.WARNING, "", e);
+				_log.warn("Unable to create monster!", e);
 			}
-			// _log.info("Monster "+i+" is id: "+(id+random));
 		}
 		newSpeeds();
 	}

+ 21 - 19
L2J_Server/java/com/l2jserver/gameserver/SevenSigns.java

@@ -28,8 +28,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
@@ -53,7 +54,7 @@ import com.l2jserver.gameserver.util.Broadcast;
  */
 public class SevenSigns
 {
-	protected static final Logger _log = Logger.getLogger(SevenSigns.class.getName());
+	protected static final Logger _log = LoggerFactory.getLogger(SevenSigns.class);
 	
 	// Basic Seven Signs Constants \\
 	public static final String SEVEN_SIGNS_HTML_PATH = "data/html/seven_signs/";
@@ -149,10 +150,11 @@ public class SevenSigns
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.SEVERE, "SevenSigns: Failed to load configuration: " + e.getMessage(), e);
+			_log.error("SevenSigns: Failed to load configuration!", e);
 		}
 		
-		_log.info("SevenSigns: Currently in the " + getCurrentPeriodName() + " period!");
+		_log.info("SevenSigns: Currently in the {} period.", getCurrentPeriodName());
+		
 		initializeSeals();
 		
 		if (isSealValidationPeriod())
@@ -163,7 +165,7 @@ public class SevenSigns
 			}
 			else
 			{
-				_log.info("SevenSigns: The " + getCabalName(getCabalHighestScore()) + " were victorious last week.");
+				_log.info("SevenSigns: The {} were victorious last week.", getCabalName(getCabalHighestScore()));
 			}
 		}
 		else if (getCabalHighestScore() == CABAL_NULL)
@@ -172,7 +174,7 @@ public class SevenSigns
 		}
 		else
 		{
-			_log.info("SevenSigns: The " + getCabalName(getCabalHighestScore()) + " are in the lead this week.");
+			_log.info("SevenSigns: The {} are in the lead this week.", getCabalName(getCabalHighestScore()));
 		}
 		
 		long milliToChange = 0;
@@ -198,7 +200,7 @@ public class SevenSigns
 		int numHours = (int) Math.floor(countDown % 24);
 		int numDays = (int) Math.floor((countDown - numHours) / 24);
 		
-		_log.info("SevenSigns: Next period begins in " + numDays + " days, " + numHours + " hours and " + numMins + " mins.");
+		_log.info("SevenSigns: Next period begins in {} days, {} hours and {} mins.", numDays, numHours, numMins);
 		
 	}
 	
@@ -534,7 +536,7 @@ public class SevenSigns
 				_nextPeriodChange.add(Calendar.MILLISECOND, PERIOD_MINOR_LENGTH);
 				break;
 		}
-		_log.info("SevenSigns: Next period change set to " + _nextPeriodChange.getTime());
+		_log.info("SevenSigns: Next period change set to {}.", _nextPeriodChange.getTime());
 	}
 	
 	public final String getCurrentPeriodName()
@@ -857,7 +859,7 @@ public class SevenSigns
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.SEVERE, "SevenSigns: Unable to load Seven Signs data from database: " + e.getMessage(), e);
+			_log.error("SevenSigns: Unable to load Seven Signs data from database!", e);
 		}
 		// Festival data is loaded now after the Seven Signs engine data.
 	}
@@ -887,7 +889,7 @@ public class SevenSigns
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.SEVERE, "SevenSigns: Unable to save data to database: " + e.getMessage(), e);
+			_log.error("SevenSigns: Unable to save data to database!", e);
 		}
 	}
 	
@@ -914,7 +916,7 @@ public class SevenSigns
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.SEVERE, "SevenSigns: Unable to save data to database: " + e.getMessage(), e);
+			_log.error("SevenSigns: Unable to save data to database!", e);
 		}
 	}
 	
@@ -951,7 +953,7 @@ public class SevenSigns
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.SEVERE, "SevenSigns: Unable to save data to database: " + e.getMessage(), e);
+			_log.error("SevenSigns: Unable to save data to database!", e);
 		}
 	}
 	
@@ -1017,7 +1019,7 @@ public class SevenSigns
 			}
 			catch (SQLException e)
 			{
-				_log.log(Level.SEVERE, "SevenSigns: Failed to save data: " + e.getMessage(), e);
+				_log.error("SevenSigns: Failed to save data!", e);
 			}
 		}
 		
@@ -1196,16 +1198,16 @@ public class SevenSigns
 			{
 				if (isSealValidationPeriod())
 				{
-					_log.info("SevenSigns: The " + getCabalName(e.getValue()) + " have won the " + getSealName(e.getKey(), false) + ".");
+					_log.info("SevenSigns: The {} have won the {}.", getCabalName(e.getValue()), getSealName(e.getKey(), false));
 				}
 				else
 				{
-					_log.info("SevenSigns: The " + getSealName(e.getKey(), false) + " is currently owned by " + getCabalName(e.getValue()) + ".");
+					_log.info("SevenSigns: The {} is currently owned by {}.", getSealName(e.getKey(), false), getCabalName(e.getValue()));
 				}
 			}
 			else
 			{
-				_log.info("SevenSigns: The " + getSealName(e.getKey(), false) + " remains unclaimed.");
+				_log.info("SevenSigns: The {} remains unclaimed.", getSealName(e.getKey(), false));
 			}
 		}
 	}
@@ -1496,7 +1498,7 @@ public class SevenSigns
 					// Send message that Seal Validation has begun.
 					sendMessageToAll(SystemMessageId.SEAL_VALIDATION_PERIOD_BEGUN);
 					
-					_log.info("SevenSigns: The " + getCabalName(_previousWinner) + " have won the competition with " + getCurrentScore(_previousWinner) + " points!");
+					_log.info("SevenSigns: The {} have won the competition with {} points!", getCabalName(_previousWinner), getCurrentScore(_previousWinner));
 					break;
 				case PERIOD_SEAL_VALIDATION: // Reset for New Cycle
 					
@@ -1535,7 +1537,7 @@ public class SevenSigns
 			Broadcast.toAllOnlinePlayers(ss);
 			spawnSevenSignsNPC();
 			
-			_log.info("SevenSigns: The " + getCurrentPeriodName() + " period has begun!");
+			_log.info("SevenSigns: The {} period has begun!", getCurrentPeriodName());
 			
 			setCalendarForNextPeriodChange();
 			

+ 14 - 12
L2J_Server/java/com/l2jserver/gameserver/SevenSignsFestival.java

@@ -29,8 +29,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledFuture;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
@@ -72,7 +74,7 @@ import com.l2jserver.util.Rnd;
  */
 public class SevenSignsFestival implements SpawnListener
 {
-	protected static final Logger _log = Logger.getLogger(SevenSignsFestival.class.getName());
+	protected static final Logger _log = LoggerFactory.getLogger(SevenSignsFestival.class);
 	
 	private static final String GET_CLAN_NAME = "SELECT clan_name FROM clan_data WHERE clan_id = (SELECT clanid FROM characters WHERE char_name = ?)";
 	
@@ -916,7 +918,7 @@ public class SevenSignsFestival implements SpawnListener
 		setNextFestivalStart(Config.ALT_FESTIVAL_MANAGER_START + FESTIVAL_SIGNUP_TIME);
 		_managerScheduledTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(_managerInstance, Config.ALT_FESTIVAL_MANAGER_START, Config.ALT_FESTIVAL_CYCLE_LENGTH);
 		
-		_log.info("SevenSignsFestival: The first Festival of Darkness cycle begins in " + (Config.ALT_FESTIVAL_MANAGER_START / 60000) + " minute(s).");
+		_log.info("SevenSignsFestival: The first Festival of Darkness cycle begins in {} minute(s).", TimeUnit.MILLISECONDS.toMinutes(Config.ALT_FESTIVAL_MANAGER_START));
 	}
 	
 	/**
@@ -954,7 +956,7 @@ public class SevenSignsFestival implements SpawnListener
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.SEVERE, "SevenSignsFestival: Failed to load configuration: " + e.getMessage(), e);
+			_log.error("SevenSignsFestival: Failed to load configuration!", e);
 		}
 		
 		StringBuilder query = new StringBuilder();
@@ -988,7 +990,7 @@ public class SevenSignsFestival implements SpawnListener
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.SEVERE, "SevenSignsFestival: Failed to load configuration: " + e.getMessage(), e);
+			_log.error("SevenSignsFestival: Failed to load configuration!", e);
 		}
 	}
 	
@@ -1038,7 +1040,7 @@ public class SevenSignsFestival implements SpawnListener
 		}
 		catch (SQLException e)
 		{
-			_log.log(Level.SEVERE, "SevenSignsFestival: Failed to save configuration: " + e.getMessage(), e);
+			_log.error("SevenSignsFestival: Failed to save configuration!", e);
 		}
 		
 		// Updates Seven Signs DB data also, so call only if really necessary.
@@ -1147,7 +1149,7 @@ public class SevenSignsFestival implements SpawnListener
 			}
 			catch (Exception e)
 			{
-				_log.log(Level.WARNING, "Could not get clan name of " + partyMemberName + ": " + e.getMessage(), e);
+				_log.warn("Could not get clan name of {}!", partyMemberName, e);
 			}
 		}
 	}
@@ -2001,7 +2003,7 @@ public class SevenSignsFestival implements SpawnListener
 			}
 			catch (Exception e)
 			{
-				_log.warning(e.getMessage());
+				_log.warn("Could not run featival task!", e);
 			}
 		}
 		
@@ -2150,10 +2152,10 @@ public class SevenSignsFestival implements SpawnListener
 			}
 			catch (Exception e)
 			{
-				_log.log(Level.WARNING, "SevenSignsFestival: Error while spawning Festival Witch ID " + _witchSpawn._npcId + ": " + e.getMessage(), e);
+				_log.warn("SevenSignsFestival: Error while spawning Festival Witch ID {}!", _witchSpawn._npcId, e);
 			}
 			
-			// Make it appear as though the Witch has apparated there.
+			// Make it appear as though the Witch has appeared there.
 			MagicSkillUse msu = new MagicSkillUse(_witchInst, _witchInst, 2003, 1, 1, 0);
 			_witchInst.broadcastPacket(msu);
 			
@@ -2285,7 +2287,7 @@ public class SevenSignsFestival implements SpawnListener
 				}
 				catch (Exception e)
 				{
-					_log.log(Level.WARNING, "SevenSignsFestival: Error while spawning NPC ID " + currSpawn._npcId + ": " + e.getMessage(), e);
+					_log.warn("SevenSignsFestival: Error while spawning NPC ID {}!", currSpawn._npcId, e);
 				}
 			}
 		}

+ 47 - 48
L2J_Server/java/com/l2jserver/gameserver/Shutdown.java

@@ -18,8 +18,10 @@
  */
 package com.l2jserver.gameserver;
 
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.UPnPService;
@@ -54,7 +56,7 @@ import com.l2jserver.gameserver.util.Broadcast;
  */
 public class Shutdown extends Thread
 {
-	private static final Logger _log = Logger.getLogger(Shutdown.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(Shutdown.class);
 	private static Shutdown _counterInstance = null;
 	
 	private int _secondsShut;
@@ -84,7 +86,7 @@ public class Shutdown extends Thread
 	
 	public void startTelnetShutdown(String IP, int seconds, boolean restart)
 	{
-		_log.warning("IP: " + IP + " issued shutdown command. " + MODE_TEXT[_shutdownMode] + " in " + seconds + " seconds!");
+		_log.warn("IP: {} issued shutdown command. {} in {} seconds!", IP, MODE_TEXT[_shutdownMode], seconds);
 		
 		if (restart)
 		{
@@ -135,7 +137,7 @@ public class Shutdown extends Thread
 	 */
 	public void telnetAbort(String IP)
 	{
-		_log.warning("IP: " + IP + " issued shutdown ABORT. " + MODE_TEXT[_shutdownMode] + " has been stopped!");
+		_log.warn("IP: {} issued shutdown ABORT. {} has been stopped!", IP, MODE_TEXT[_shutdownMode]);
 		
 		if (_counterInstance != null)
 		{
@@ -191,11 +193,11 @@ public class Shutdown extends Thread
 			try
 			{
 				UPnPService.getInstance().removeAllPorts();
-				_log.info("UPnP Service: All ports mappings deleted (" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+				_log.info("UPnP Service: All ports mappings deleted ({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
-				_log.log(Level.WARNING, "Error while removing UPnP port mappings: ", t);
+				_log.warn("Error while removing UPnP port mappings!", e);
 			}
 			
 			try
@@ -203,20 +205,20 @@ public class Shutdown extends Thread
 				if ((Config.OFFLINE_TRADE_ENABLE || Config.OFFLINE_CRAFT_ENABLE) && Config.RESTORE_OFFLINERS)
 				{
 					OfflineTradersTable.getInstance().storeOffliners();
-					_log.info("Offline Traders Table: Offline shops stored(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+					_log.info("Offline Traders Table: Offline shops stored({}ms).", tc.getEstimatedTimeAndRestartCounter());
 				}
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
-				_log.log(Level.WARNING, "Error saving offline shops.", t);
+				_log.warn("Error saving offline shops!", e);
 			}
 			
 			try
 			{
 				disconnectAllCharacters();
-				_log.info("All players disconnected and saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+				_log.info("All players disconnected and saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
 				// ignore
 			}
@@ -225,20 +227,20 @@ public class Shutdown extends Thread
 			try
 			{
 				GameTimeController.getInstance().stopTimer();
-				_log.info("Game Time Controller: Timer stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+				_log.info("Game Time Controller: Timer stopped({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
 				// ignore
 			}
 			
-			// stop all threadpolls
+			// stop all thread pools
 			try
 			{
 				ThreadPoolManager.getInstance().shutdown();
-				_log.info("Thread Pool Manager: Manager has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+				_log.info("Thread Pool Manager: Manager has been shut down({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
 				// ignore
 			}
@@ -246,9 +248,9 @@ public class Shutdown extends Thread
 			try
 			{
 				LoginServerThread.getInstance().interrupt();
-				_log.info("Login Server Thread: Thread interruped(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+				_log.info("Login Server Thread: Thread interruped({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
 				// ignore
 			}
@@ -261,9 +263,9 @@ public class Shutdown extends Thread
 			try
 			{
 				GameServer.gameServer.getSelectorThread().shutdown();
-				_log.info("Game Server: Selector thread has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+				_log.info("Game Server: Selector thread has been shut down({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
 				// ignore
 			}
@@ -272,9 +274,9 @@ public class Shutdown extends Thread
 			try
 			{
 				ConnectionFactory.getInstance().close();
-				_log.info("L2Database Factory: Database connection has been shut down(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+				_log.info("ConnectionFactory: Database connection has been shut down({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
 				
 			}
@@ -289,14 +291,14 @@ public class Shutdown extends Thread
 				Runtime.getRuntime().halt(0);
 			}
 			
-			_log.info("The server has been successfully shut down in " + (tc1.getEstimatedTime() / 1000) + "seconds.");
+			_log.info("The server has been successfully shut down in {}seconds.", TimeUnit.MILLISECONDS.toSeconds(tc1.getEstimatedTime()));
 		}
 		else
 		{
 			// gm shutdown: send warnings and then call exit to start shutdown sequence
 			countdown();
 			// last point where logging is operational :(
-			_log.warning("GM shutdown countdown is over. " + MODE_TEXT[_shutdownMode] + " NOW!");
+			_log.warn("GM shutdown countdown is over. {} NOW!", MODE_TEXT[_shutdownMode]);
 			switch (_shutdownMode)
 			{
 				case GM_SHUTDOWN:
@@ -331,7 +333,7 @@ public class Shutdown extends Thread
 			_shutdownMode = GM_SHUTDOWN;
 		}
 		
-		_log.warning("GM: " + activeChar.getName() + "(" + activeChar.getObjectId() + ") issued shutdown command. " + MODE_TEXT[_shutdownMode] + " in " + seconds + " seconds!");
+		_log.warn("GM: {}({}) issued shutdown command. {} in {} seconds!", activeChar.getName(), activeChar.getObjectId(), MODE_TEXT[_shutdownMode], seconds);
 		
 		if (_shutdownMode > 0)
 		{
@@ -375,7 +377,7 @@ public class Shutdown extends Thread
 	 */
 	public void abort(L2PcInstance activeChar)
 	{
-		_log.warning("GM: " + activeChar.getName() + "(" + activeChar.getObjectId() + ") issued shutdown ABORT. " + MODE_TEXT[_shutdownMode] + " has been stopped!");
+		_log.warn("GM: {}({}) issued shutdown ABORT. {} has been stopped!", activeChar.getName(), activeChar.getObjectId(), MODE_TEXT[_shutdownMode]);
 		if (_counterInstance != null)
 		{
 			_counterInstance._abort();
@@ -500,46 +502,43 @@ public class Shutdown extends Thread
 		
 		}
 		
-		/*
-		 * if (Config.ACTIVATE_POSITION_RECORDER) Universe.getInstance().implode(true);
-		 */
 		TimeCounter tc = new TimeCounter();
 		// Seven Signs data is now saved along with Festival data.
 		if (!SevenSigns.getInstance().isSealValidationPeriod())
 		{
 			SevenSignsFestival.getInstance().saveFestivalData(false);
-			_log.info("SevenSignsFestival: Festival data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+			_log.info("SevenSignsFestival: Festival data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		}
 		
 		// Save Seven Signs data before closing. :)
 		SevenSigns.getInstance().saveSevenSignsData();
-		_log.info("SevenSigns: Seven Signs data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("SevenSigns: Seven Signs data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		SevenSigns.getInstance().saveSevenSignsStatus();
-		_log.info("SevenSigns: Seven Signs status saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("SevenSigns: Seven Signs status saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		
 		// Save all raidboss and GrandBoss status ^_^
 		RaidBossSpawnManager.getInstance().cleanUp();
-		_log.info("RaidBossSpawnManager: All raidboss info saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("RaidBossSpawnManager: All raidboss info saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		GrandBossManager.getInstance().cleanUp();
-		_log.info("GrandBossManager: All Grand Boss info saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("GrandBossManager: All Grand Boss info saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		ItemAuctionManager.getInstance().shutdown();
-		_log.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("Item Auction Manager: All tasks stopped({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		Olympiad.getInstance().saveOlympiadStatus();
-		_log.info("Olympiad System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("Olympiad System: Data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		Hero.getInstance().shutdown();
-		_log.info("Hero System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("Hero System: Data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		ClanTable.getInstance().storeClanScore();
-		_log.info("Clan System: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("Clan System: Data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		
 		// Save Cursed Weapons data before closing.
 		CursedWeaponsManager.getInstance().saveData();
-		_log.info("Cursed Weapons Manager: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("Cursed Weapons Manager: Data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		
 		// Save all manor data
 		if (!Config.ALT_MANOR_SAVE_ALL_ACTIONS)
 		{
 			CastleManorManager.getInstance().storeMe();
-			_log.info("Castle Manor Manager: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+			_log.info("Castle Manor Manager: Data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		}
 		
 		CHSiegeManager.getInstance().onServerShutDown();
@@ -547,19 +546,19 @@ public class Shutdown extends Thread
 		
 		// Save all global (non-player specific) Quest data that needs to persist after reboot
 		QuestManager.getInstance().save();
-		_log.info("Quest Manager: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("Quest Manager: Data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		
 		// Save all global variables data
 		GlobalVariablesManager.getInstance().storeMe();
-		_log.info("Global Variables Manager: Variables saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+		_log.info("Global Variables Manager: Variables saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		
 		// Save items on ground before closing
 		if (Config.SAVE_DROPPED_ITEM)
 		{
 			ItemsOnGroundManager.getInstance().saveInDb();
-			_log.info("Items On Ground Manager: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+			_log.info("Items On Ground Manager: Data saved({}ms).", tc.getEstimatedTimeAndRestartCounter());
 			ItemsOnGroundManager.getInstance().cleanUp();
-			_log.info("Items On Ground Manager: Cleaned up(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
+			_log.info("Items On Ground Manager: Cleaned up({}ms).", tc.getEstimatedTimeAndRestartCounter());
 		}
 		
 		// Save bot reports to database
@@ -598,9 +597,9 @@ public class Shutdown extends Thread
 				}
 				player.deleteMe();
 			}
-			catch (Throwable t)
+			catch (Exception e)
 			{
-				_log.log(Level.WARNING, "Failed logour char " + player, t);
+				_log.warn("Failed logour char {}", player, e);
 			}
 		}
 	}

+ 8 - 7
L2J_Server/java/com/l2jserver/gameserver/ThreadPoolManager.java

@@ -27,8 +27,9 @@ import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.util.StringUtil;
@@ -51,9 +52,9 @@ import com.l2jserver.util.StringUtil;
  * </ul>
  * or
  * <ul>
- * <li>{@link #scheduleEffectAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleEffectAtFixedRate(Runnable, long, long)} : for effects Tasks that needs to be executed periodicaly.</li>
- * <li>{@link #scheduleGeneralAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleGeneralAtFixedRate(Runnable, long, long)} : for scheduled Tasks that needs to be executed periodicaly.</li>
- * <li>{@link #scheduleAiAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleAiAtFixedRate(Runnable, long, long)} : for AI Tasks that needs to be executed periodicaly</li>
+ * <li>{@link #scheduleEffectAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleEffectAtFixedRate(Runnable, long, long)} : for effects Tasks that needs to be executed periodically.</li>
+ * <li>{@link #scheduleGeneralAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleGeneralAtFixedRate(Runnable, long, long)} : for scheduled Tasks that needs to be executed periodically.</li>
+ * <li>{@link #scheduleAiAtFixedRate(Runnable, long, long, TimeUnit)} and {@link #scheduleAiAtFixedRate(Runnable, long, long)} : for AI Tasks that needs to be executed periodically</li>
  * </ul>
  * </p>
  * <p>
@@ -69,7 +70,7 @@ import com.l2jserver.util.StringUtil;
  */
 public class ThreadPoolManager
 {
-	protected static final Logger _log = Logger.getLogger(ThreadPoolManager.class.getName());
+	protected static final Logger _log = LoggerFactory.getLogger(ThreadPoolManager.class);
 	
 	private static final class RunnableWrapper implements Runnable
 	{
@@ -571,7 +572,7 @@ public class ThreadPoolManager
 		}
 		catch (InterruptedException e)
 		{
-			_log.log(Level.WARNING, "", e);
+			_log.warn("There has been a problem shuting down the thread pool manager!", e);
 		}
 	}
 	

+ 5 - 3
L2J_Server/java/com/l2jserver/gameserver/ai/AbstractAI.java

@@ -23,7 +23,9 @@ import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_FOLLOW;
 import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
 
 import java.util.concurrent.Future;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -50,7 +52,7 @@ import com.l2jserver.gameserver.taskmanager.AttackStanceTaskManager;
  */
 public abstract class AbstractAI implements Ctrl
 {
-	protected final Logger _log = Logger.getLogger(getClass().getName());
+	protected static final Logger _log = LoggerFactory.getLogger(AbstractAI.class);
 	
 	private NextAction _nextAction;
 	
@@ -123,7 +125,7 @@ public abstract class AbstractAI implements Ctrl
 			}
 			catch (Exception e)
 			{
-				_log.warning(getClass().getSimpleName() + ": Error: " + e.getMessage());
+				_log.warn("{}: There has been a problem running the follow task!", getClass().getSimpleName(), e);
 			}
 		}
 	}

+ 0 - 1
L2J_Server/java/com/l2jserver/gameserver/ai/Ctrl.java

@@ -44,7 +44,6 @@ import com.l2jserver.gameserver.model.actor.L2Character;
  */
 public interface Ctrl
 {
-	
 	/**
 	 * Gets the actor.
 	 * @return the actor

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/ai/L2AttackableAI.java

@@ -840,7 +840,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
 			}
 			catch (NullPointerException e)
 			{
-				_log.warning(getClass().getSimpleName() + ": thinkAttack() faction call failed: " + e.getMessage());
+				_log.warn("{}: There has been a problem trying to think the attack!", getClass().getSimpleName(), e);
 			}
 		}
 		
@@ -2064,7 +2064,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
 		catch (NullPointerException e)
 		{
 			setIntention(AI_INTENTION_ACTIVE);
-			_log.warning(getClass().getSimpleName() + ": " + this + " - failed executing movementDisable(): " + e.getMessage());
+			_log.warn("{}: {} - failed executing movementDisable()!", getClass().getSimpleName(), this, e);
 			return;
 		}
 	}
@@ -2628,7 +2628,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
 		}
 		catch (Exception e)
 		{
-			_log.warning(getClass().getSimpleName() + ": " + this + " -  onEvtThink() failed: " + e.getMessage());
+			_log.warn("{}: {} -  onEvtThink() failed!", getClass().getSimpleName(), this, e);
 		}
 		finally
 		{

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/ai/L2CharacterAI.java

@@ -485,7 +485,7 @@ public class L2CharacterAI extends AbstractAI
 		setTarget(object);
 		if ((object.getX() == 0) && (object.getY() == 0)) // TODO: Find the drop&spawn bug
 		{
-			_log.warning("Object in coords 0,0 - using a temporary fix");
+			_log.warn("Object in coords 0,0 - using a temporary fix");
 			object.setXYZ(getActor().getX(), getActor().getY(), getActor().getZ() + 5);
 		}
 		
@@ -991,7 +991,7 @@ public class L2CharacterAI extends AbstractAI
 	{
 		if (worldPosition == null)
 		{
-			_log.warning("maybeMoveToPosition: worldPosition == NULL!");
+			_log.warn("maybeMoveToPosition: worldPosition == NULL!");
 			return false;
 		}
 		
@@ -1063,7 +1063,7 @@ public class L2CharacterAI extends AbstractAI
 		// Get the distance between the current position of the L2Character and the target (x,y)
 		if (target == null)
 		{
-			_log.warning("maybeMoveToPawn: target == NULL!");
+			_log.warn("maybeMoveToPawn: target == NULL!");
 			return false;
 		}
 		if (offset < 0)

+ 3 - 10
L2J_Server/java/com/l2jserver/gameserver/ai/L2FortSiegeGuardAI.java

@@ -25,7 +25,6 @@ import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
 import java.util.Collection;
 import java.util.concurrent.Future;
 
-import com.l2jserver.Config;
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.GeoData;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -191,10 +190,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
 	@Override
 	synchronized void changeIntention(CtrlIntention intention, Object arg0, Object arg1)
 	{
-		if (Config.DEBUG)
-		{
-			_log.warning(getClass().getSimpleName() + ": changeIntention(" + intention + ", " + arg0 + ", " + arg1 + ")");
-		}
+		_log.debug("{}: changeIntention({}, {}, {})", getClass().getSimpleName(), intention, arg0, arg1);
 		
 		if (intention == AI_INTENTION_IDLE /* || intention == AI_INTENTION_ACTIVE */) // active becomes idle if only a summon is present
 		{
@@ -368,10 +364,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
 	 */
 	private void thinkAttack()
 	{
-		if (Config.DEBUG)
-		{
-			_log.warning(getClass().getSimpleName() + ": thinkAttack(); timeout=" + (_attackTimeout - GameTimeController.getInstance().getGameTicks()));
-		}
+		_log.debug("{}: thinkAttack(); timeout={}", getClass().getSimpleName(), (_attackTimeout - GameTimeController.getInstance().getGameTicks()));
 		
 		if (_attackTimeout < GameTimeController.getInstance().getGameTicks())
 		{
@@ -568,7 +561,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
 		}
 		catch (NullPointerException e)
 		{
-			// _log.warning("AttackableAI: Attack target is NULL.");
+			_log.warn("{}: Attack target is NULL.", getClass().getSimpleName());
 			_actor.setTarget(null);
 			setIntention(AI_INTENTION_IDLE, null, null);
 			return;

+ 2 - 9
L2J_Server/java/com/l2jserver/gameserver/ai/L2SiegeGuardAI.java

@@ -25,7 +25,6 @@ import static com.l2jserver.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
 import java.util.Collection;
 import java.util.concurrent.Future;
 
-import com.l2jserver.Config;
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.GeoData;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -180,10 +179,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
 	@Override
 	synchronized void changeIntention(CtrlIntention intention, Object arg0, Object arg1)
 	{
-		if (Config.DEBUG)
-		{
-			_log.info(getClass().getSimpleName() + ": changeIntention(" + intention + ", " + arg0 + ", " + arg1 + ")");
-		}
+		_log.debug("{}: changeIntention({}, {}, {})", getClass().getSimpleName(), intention, arg0, arg1);
 		
 		if (intention == AI_INTENTION_IDLE /* || intention == AI_INTENTION_ACTIVE */) // active becomes idle if only a summon is present
 		{
@@ -347,10 +343,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
 	 */
 	private void thinkAttack()
 	{
-		if (Config.DEBUG)
-		{
-			_log.info(getClass().getSimpleName() + ": thinkAttack(); timeout=" + (_attackTimeout - GameTimeController.getInstance().getGameTicks()));
-		}
+		_log.debug("{}: thinkAttack(); timeout={}", getClass().getSimpleName(), (_attackTimeout - GameTimeController.getInstance().getGameTicks()));
 		
 		if (_attackTimeout < GameTimeController.getInstance().getGameTicks())
 		{

+ 9 - 8
L2J_Server/java/com/l2jserver/gameserver/cache/HtmCache.java

@@ -24,8 +24,9 @@ import java.io.FileInputStream;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.util.Util;
@@ -36,9 +37,9 @@ import com.l2jserver.util.file.filter.HTMLFilter;
  */
 public class HtmCache
 {
-	private static final Logger _log = Logger.getLogger(HtmCache.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(HtmCache.class);
 	
-	private static final HTMLFilter htmlFilter = new HTMLFilter();
+	private static final HTMLFilter HTML_FILTER = new HTMLFilter();
 	
 	private static final Map<String, String> _cache = Config.LAZY_CACHE ? new ConcurrentHashMap<>() : new HashMap<>();
 	
@@ -109,7 +110,7 @@ public class HtmCache
 	
 	public String loadFile(File file)
 	{
-		if (!htmlFilter.accept(file))
+		if (!HTML_FILTER.accept(file))
 		{
 			return null;
 		}
@@ -139,7 +140,7 @@ public class HtmCache
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Problem with htm file " + e.getMessage(), e);
+			_log.warn("Problem with htm file {}!", file, e);
 		}
 		return content;
 	}
@@ -150,7 +151,7 @@ public class HtmCache
 		if (content == null)
 		{
 			content = "<html><body>My text is missing:<br>" + path + "</body></html>";
-			_log.warning("Cache[HTML]: Missing HTML page: " + path);
+			_log.warn("Cache[HTML]: Missing HTML page: " + path);
 		}
 		return content;
 	}
@@ -204,7 +205,7 @@ public class HtmCache
 	 */
 	public boolean isLoadable(String path)
 	{
-		return htmlFilter.accept(new File(Config.DATAPACK_ROOT, path));
+		return HTML_FILTER.accept(new File(Config.DATAPACK_ROOT, path));
 	}
 	
 	public static HtmCache getInstance()

+ 9 - 8
L2J_Server/java/com/l2jserver/gameserver/communitybbs/BB/Forum.java

@@ -25,16 +25,17 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.communitybbs.Manager.ForumsBBSManager;
 import com.l2jserver.gameserver.communitybbs.Manager.TopicBBSManager;
 
-public class Forum
+public final class Forum
 {
-	private static final Logger _log = Logger.getLogger(Forum.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(Forum.class);
 	
 	// type
 	public static final int ROOT = 0;
@@ -111,7 +112,7 @@ public class Forum
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Data error on Forum " + _forumId + " : " + e.getMessage(), e);
+			_log.warn("Could not get from database forum ID {}!", _forumId, e);
 		}
 		
 		try (Connection con = ConnectionFactory.getInstance().getConnection();
@@ -133,7 +134,7 @@ public class Forum
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Data error on Forum " + _forumId + " : " + e.getMessage(), e);
+			_log.warn("Could not get from database topics for forum ID {}", _forumId, e);
 		}
 	}
 	
@@ -155,7 +156,7 @@ public class Forum
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Data error on Forum (children): " + e.getMessage(), e);
+			_log.warn("Could not get from database child forums for forum ID {}", _forumId, e);
 		}
 	}
 	
@@ -232,7 +233,7 @@ public class Forum
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Error while saving new Forum to db " + e.getMessage(), e);
+			_log.error("Could not save forum ID {} in database!", _forumId, e);
 		}
 	}
 	

+ 9 - 8
L2J_Server/java/com/l2jserver/gameserver/communitybbs/BB/Post.java

@@ -23,8 +23,9 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.communitybbs.Manager.PostBBSManager;
@@ -34,7 +35,7 @@ import com.l2jserver.gameserver.communitybbs.Manager.PostBBSManager;
  */
 public class Post
 {
-	private static Logger _log = Logger.getLogger(Post.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(Post.class);
 	
 	public static class CPost
 	{
@@ -93,7 +94,7 @@ public class Post
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Error while saving new Post to db " + e.getMessage(), e);
+			_log.warn("Could not save post ID {} in database!", cp.postId, e);
 		}
 	}
 	
@@ -114,7 +115,7 @@ public class Post
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Error while deleting post: " + e.getMessage(), e);
+			_log.warn("Unable to delete post for topic ID {} in forum ID {} from database!", t.getForumID(), t.getID(), e);
 		}
 	}
 	
@@ -146,7 +147,7 @@ public class Post
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Data error on Post " + t.getForumID() + "/" + t.getID() + " : " + e.getMessage(), e);
+			_log.warn("Unable to get post from topic ID {} in forum ID {} from database!", t.getForumID(), t.getID(), e);
 		}
 	}
 	
@@ -155,10 +156,10 @@ public class Post
 	 */
 	public void updatetxt(int i)
 	{
+		final CPost cp = getCPost(i);
 		try (Connection con = ConnectionFactory.getInstance().getConnection();
 			PreparedStatement ps = con.prepareStatement("UPDATE posts SET post_txt=? WHERE post_id=? AND post_topic_id=? AND post_forum_id=?"))
 		{
-			CPost cp = getCPost(i);
 			ps.setString(1, cp.postTxt);
 			ps.setInt(2, cp.postId);
 			ps.setInt(3, cp.postTopicId);
@@ -167,7 +168,7 @@ public class Post
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Error while saving new Post to db " + e.getMessage(), e);
+			_log.warn("Unable to store post ID {} in database!", cp.postId, e);
 		}
 	}
 }

+ 6 - 5
L2J_Server/java/com/l2jserver/gameserver/communitybbs/BB/Topic.java

@@ -20,15 +20,16 @@ package com.l2jserver.gameserver.communitybbs.BB;
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
 import com.l2jserver.gameserver.communitybbs.Manager.TopicBBSManager;
 
 public class Topic
 {
-	private static final Logger _log = Logger.getLogger(Topic.class.getName());
+	private static final Logger _log = LoggerFactory.getLogger(Topic.class);
 	
 	public static final int MORMAL = 0;
 	public static final int MEMO = 1;
@@ -89,7 +90,7 @@ public class Topic
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Error while saving new Topic to db " + e.getMessage(), e);
+			_log.warn("Error while saving new Topic to database!", e);
 		}
 	}
 	
@@ -141,7 +142,7 @@ public class Topic
 		}
 		catch (Exception e)
 		{
-			_log.log(Level.WARNING, "Error while deleting topic: " + e.getMessage(), e);
+			_log.warn("Error while deleting topic ID {} from database!", getID(), e);
 		}
 	}
 	

+ 5 - 6
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/AdminData.java

@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -61,9 +60,9 @@ public final class AdminData implements IXmlReader
 		_accessLevels.clear();
 		_adminCommandAccessRights.clear();
 		parseDatapackFile("config/accessLevels.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _accessLevels.size() + " Access Levels.");
+		LOGGER.info("{}: Loaded: {} Access Levels.", getClass().getSimpleName(), _accessLevels.size());
 		parseDatapackFile("config/adminCommands.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _adminCommandAccessRights.size() + " Access Commands.");
+		LOGGER.info("{}: Loaded: {} Access Commands.", getClass().getSimpleName(), _adminCommandAccessRights.size());
 	}
 	
 	@Override
@@ -164,11 +163,11 @@ public final class AdminData implements IXmlReader
 			{
 				acar = new L2AdminCommandAccessRight(adminCommand, true, accessLevel.getLevel());
 				_adminCommandAccessRights.put(adminCommand, acar);
-				LOGGER.info(getClass().getSimpleName() + ": No rights defined for admin command " + adminCommand + " auto setting accesslevel: " + accessLevel.getLevel() + " !");
+				LOGGER.info("{}: No rights defined for admin command {} auto setting accesslevel: {}!", getClass().getSimpleName(), adminCommand, accessLevel.getLevel());
 			}
 			else
 			{
-				LOGGER.info(getClass().getSimpleName() + ": No rights defined for admin command " + adminCommand + " !");
+				LOGGER.info("{}: No rights defined for admin command {}!", getClass().getSimpleName(), adminCommand);
 				return false;
 			}
 		}
@@ -185,7 +184,7 @@ public final class AdminData implements IXmlReader
 		final L2AdminCommandAccessRight acar = _adminCommandAccessRights.get(command);
 		if (acar == null)
 		{
-			LOGGER.info(getClass().getSimpleName() + ": No rights defined for admin command " + command + ".");
+			LOGGER.info("{}: No rights defined for admin command {}.", getClass().getSimpleName(), command);
 			return false;
 		}
 		return acar.getRequireConfirm();

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ArmorSetsData.java

@@ -50,7 +50,7 @@ public final class ArmorSetsData implements IXmlReader
 	{
 		_armorSets.clear();
 		parseDatapackDirectory("data/stats/armorsets", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _armorSets.size() + " Armor sets.");
+		LOGGER.info("{}: Loaded {} Armor sets.", getClass().getSimpleName(), _armorSets.size());
 	}
 	
 	@Override

+ 6 - 7
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/BuyListData.java

@@ -25,7 +25,6 @@ import java.sql.ResultSet;
 import java.sql.Statement;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -64,7 +63,7 @@ public final class BuyListData implements IXmlReader
 			parseDatapackDirectory("data/buylists/custom", false);
 		}
 		
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _buyLists.size() + " BuyLists.");
+		LOGGER.info("{}: Loaded {} BuyLists.", getClass().getSimpleName(), _buyLists.size());
 		
 		try (Connection con = ConnectionFactory.getInstance().getConnection();
 			Statement statement = con.createStatement();
@@ -79,13 +78,13 @@ public final class BuyListData implements IXmlReader
 				final L2BuyList buyList = getBuyList(buyListId);
 				if (buyList == null)
 				{
-					LOGGER.warning("BuyList found in database but not loaded from xml! BuyListId: " + buyListId);
+					LOGGER.warn("BuyList found in database but not loaded from xml! BuyListId: {}", buyListId);
 					continue;
 				}
 				final Product product = buyList.getProductByItemId(itemId);
 				if (product == null)
 				{
-					LOGGER.warning("ItemId found in database but not loaded from xml! BuyListId: " + buyListId + " ItemId: " + itemId);
+					LOGGER.warn("ItemId found in database but not loaded from xml! BuyListId: {} Item ID: {}", buyListId, itemId);
 					continue;
 				}
 				if (count < product.getMaxCount())
@@ -97,7 +96,7 @@ public final class BuyListData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "Failed to load buyList data from database.", e);
+			LOGGER.warn("Failed to load buyList data from database.", e);
 		}
 	}
 	
@@ -146,7 +145,7 @@ public final class BuyListData implements IXmlReader
 							}
 							else
 							{
-								LOGGER.warning("Item not found. BuyList:" + buyList.getListId() + " ItemID:" + itemId + " File:" + f.getName());
+								LOGGER.warn("Item not found. BuyList: {} Item ID: {} File: {}", buyList.getListId(), itemId, f.getName());
 							}
 						}
 						else if ("npcs".equalsIgnoreCase(list_node.getNodeName()))
@@ -167,7 +166,7 @@ public final class BuyListData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "Failed to load buyList data from xml File:" + f.getName(), e);
+			LOGGER.warn("Failed to load buyList data from xml File: {}", f.getName(), e);
 		}
 	}
 	

+ 3 - 7
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/CategoryData.java

@@ -22,8 +22,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -38,8 +36,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class CategoryData implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(CategoryData.class.getName());
-	
 	private final Map<CategoryType, Set<Integer>> _categories = new HashMap<>();
 	
 	protected CategoryData()
@@ -52,7 +48,7 @@ public final class CategoryData implements IXmlReader
 	{
 		_categories.clear();
 		parseDatapackFile("data/categoryData.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _categories.size() + " Categories.");
+		LOGGER.info("{}: Loaded {} Categories.", getClass().getSimpleName(), _categories.size());
 	}
 	
 	@Override
@@ -70,7 +66,7 @@ public final class CategoryData implements IXmlReader
 						final CategoryType categoryType = CategoryType.findByName(attrs.getNamedItem("name").getNodeValue());
 						if (categoryType == null)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Can't find category by name :" + attrs.getNamedItem("name").getNodeValue());
+							LOGGER.warn("{}: Can't find category by name :{}", getClass().getSimpleName(), attrs.getNamedItem("name").getNodeValue());
 							continue;
 						}
 						
@@ -100,7 +96,7 @@ public final class CategoryData implements IXmlReader
 		final Set<Integer> category = getCategoryByType(type);
 		if (category == null)
 		{
-			LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Can't find category type :" + type);
+			LOGGER.warn("{}: Can't find category type: {}", getClass().getSimpleName(), type);
 			return false;
 		}
 		return category.contains(id);

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ClassListData.java

@@ -50,7 +50,7 @@ public final class ClassListData implements IXmlReader
 	{
 		_classData.clear();
 		parseDatapackFile("data/stats/chars/classList.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _classData.size() + " Class data.");
+		LOGGER.info("{}: Loaded {} Class data.", getClass().getSimpleName(), _classData.size());
 	}
 	
 	@Override

+ 1 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/DoorData.java

@@ -61,6 +61,7 @@ public class DoorData implements IXmlReader
 		_groups.clear();
 		_regions.clear();
 		parseDatapackFile("data/doors.xml");
+		LOGGER.info("{}: Loaded {} Door templates for {} regions.", getClass().getSimpleName(), _doors.size(), _regions.size());
 	}
 	
 	@Override
@@ -88,8 +89,6 @@ public class DoorData implements IXmlReader
 				}
 			}
 		}
-		
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _doors.size() + " Door Templates for " + _regions.size() + " regions.");
 	}
 	
 	public void insertCollisionData(StatsSet set)

+ 6 - 7
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -55,8 +54,8 @@ public class EnchantItemData implements IXmlReader
 		_scrolls.clear();
 		_supports.clear();
 		parseDatapackFile("data/enchantItemData.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _scrolls.size() + " Enchant Scrolls.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _supports.size() + " Support Items.");
+		LOGGER.info("{}: Loaded {} Enchant Scrolls.", getClass().getSimpleName(), _scrolls.size());
+		LOGGER.info("{}: Loaded {} Support Items.", getClass().getSimpleName(), _supports.size());
 	}
 	
 	@Override
@@ -95,11 +94,11 @@ public class EnchantItemData implements IXmlReader
 						}
 						catch (NullPointerException e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant scroll: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Unexistent enchant scroll: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 						catch (IllegalAccessError e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Wrong enchant scroll item type: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Wrong enchant scroll item type: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 					}
 					else if ("support".equalsIgnoreCase(d.getNodeName()))
@@ -119,11 +118,11 @@ public class EnchantItemData implements IXmlReader
 						}
 						catch (NullPointerException e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Unexistent enchant support item: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Unexistent enchant support item: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 						catch (IllegalAccessError e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Wrong enchant support item type: " + set.getString("id") + " defined in enchant data!");
+							LOGGER.warn("{}: Wrong enchant support item type: {} defined in enchant data!", getClass().getSimpleName(), set.getString("id"));
 						}
 					}
 				}

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemGroupsData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -36,6 +35,7 @@ import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Enchant Item Group data.
  * @author UnAfraid
  */
 public final class EnchantItemGroupsData implements IXmlReader
@@ -54,8 +54,8 @@ public final class EnchantItemGroupsData implements IXmlReader
 		_itemGroups.clear();
 		_scrollGroups.clear();
 		parseDatapackFile("data/enchantItemGroups.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _itemGroups.size() + " item group templates.");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _scrollGroups.size() + " scroll group templates.");
+		LOGGER.info("{}: Loaded: {} item group templates.", getClass().getSimpleName(), _itemGroups.size());
+		LOGGER.info("{}: Loaded: {} scroll group templates.", getClass().getSimpleName(), _scrollGroups.size());
 	}
 	
 	@Override

+ 8 - 8
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemHPBonusData.java

@@ -54,6 +54,14 @@ public class EnchantItemHPBonusData implements IXmlReader
 		load();
 	}
 	
+	@Override
+	public void load()
+	{
+		_armorHPBonuses.clear();
+		parseDatapackFile("data/stats/enchantHPBonus.xml");
+		LOGGER.info("{}: Loaded {} Enchant HP Bonuses.", getClass().getSimpleName(), _armorHPBonuses.size());
+	}
+	
 	@Override
 	public void parseDocument(Document doc)
 	{
@@ -111,14 +119,6 @@ public class EnchantItemHPBonusData implements IXmlReader
 		}
 	}
 	
-	@Override
-	public void load()
-	{
-		_armorHPBonuses.clear();
-		parseDatapackFile("data/stats/enchantHPBonus.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _armorHPBonuses.size() + " Enchant HP Bonuses.");
-	}
-	
 	/**
 	 * Gets the HP bonus.
 	 * @param item the item

+ 1 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantItemOptionsData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -88,7 +87,7 @@ public class EnchantItemOptionsData implements IXmlReader
 				}
 			}
 		}
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _data.size() + " Items and " + counter + " Options.");
+		LOGGER.info("{}: Loaded: {} Items and {} Options.", getClass().getSimpleName(), _data.size(), counter);
 	}
 	
 	/**

+ 2 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/EnchantSkillGroupsData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -71,7 +70,7 @@ public class EnchantSkillGroupsData implements IXmlReader
 		{
 			routes += group.getEnchantGroupDetails().size();
 		}
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _enchantSkillGroups.size() + " groups and " + routes + " routes.");
+		LOGGER.info("{}: Loaded {} groups and {} routes.", getClass().getSimpleName(), _enchantSkillGroups.size(), routes);
 	}
 	
 	@Override
@@ -137,7 +136,7 @@ public class EnchantSkillGroupsData implements IXmlReader
 			
 			return _enchantSkillGroups.get(group).getEnchantGroupDetails().size();
 		}
-		LOGGER.log(Level.SEVERE, getClass().getSimpleName() + ": Error while loading generating enchant skill id: " + skillId + "; route: " + route + "; missing group: " + group);
+		LOGGER.error("{}: Error while loading generating enchant skill ID: {} route: {} missing group: {}", skillId, route, group);
 		return 0;
 	}
 	

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/ExperienceData.java

@@ -51,9 +51,9 @@ public final class ExperienceData implements IXmlReader
 	{
 		_expTable.clear();
 		parseDatapackFile("data/stats/experience.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _expTable.size() + " levels.");
-		LOGGER.info(getClass().getSimpleName() + ": Max Player Level is: " + (MAX_LEVEL - 1));
-		LOGGER.info(getClass().getSimpleName() + ": Max Pet Level is: " + (MAX_PET_LEVEL - 1));
+		LOGGER.info("{}: Loaded {} levels.", getClass().getSimpleName(), _expTable.size());
+		LOGGER.info("{}: Max Player Level is: {}", getClass().getSimpleName(), (MAX_LEVEL - 1));
+		LOGGER.info("{}: Max Pet Level is: {}", getClass().getSimpleName(), (MAX_PET_LEVEL - 1));
 	}
 	
 	@Override

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishData.java

@@ -56,7 +56,7 @@ public final class FishData implements IXmlReader
 		_fishNormal.clear();
 		_fishHard.clear();
 		parseDatapackFile("data/stats/fishing/fishes.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_fishEasy.size() + _fishNormal.size() + _fishHard.size()) + " Fishes.");
+		LOGGER.info("{}: Loaded {} Fish.", getClass().getSimpleName(), (_fishEasy.size() + _fishNormal.size() + _fishHard.size()));
 	}
 	
 	@Override
@@ -134,7 +134,7 @@ public final class FishData implements IXmlReader
 			}
 			default:
 			{
-				LOGGER.warning(getClass().getSimpleName() + ": Unmanaged fish grade!");
+				LOGGER.warn("{}: Unmanaged fish grade!", getClass().getSimpleName());
 				return result;
 			}
 		}
@@ -150,7 +150,7 @@ public final class FishData implements IXmlReader
 		
 		if (result.isEmpty())
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Cannot find any fish for level: " + level + " group: " + group + " and grade: " + grade + "!");
+			LOGGER.warn("{}: Cannot find any fish for level: {} group: {} and grade: {}!", getClass().getSimpleName(), level, group, grade);
 		}
 		return result;
 	}

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingMonstersData.java

@@ -50,7 +50,7 @@ public final class FishingMonstersData implements IXmlReader
 	{
 		_fishingMonstersData.clear();
 		parseDatapackFile("data/stats/fishing/fishingMonsters.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _fishingMonstersData.size() + " Fishing Monsters.");
+		LOGGER.info("{}: Loaded {} Fishing Monsters.", getClass().getSimpleName(), _fishingMonstersData.size());
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/FishingRodsData.java

@@ -50,7 +50,7 @@ public final class FishingRodsData implements IXmlReader
 	{
 		_fishingRods.clear();
 		parseDatapackFile("data/stats/fishing/fishingRods.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _fishingRods.size() + " Fishing Rods.");
+		LOGGER.info("{}: Loaded {} Fishing Rods.", getClass().getSimpleName(), _fishingRods.size());
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HennaData.java

@@ -56,7 +56,7 @@ public final class HennaData implements IXmlReader
 	{
 		_hennaList.clear();
 		parseDatapackFile("data/stats/hennaList.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _hennaList.size() + " Henna data.");
+		LOGGER.info("{}: Loaded {} Henna data.", getClass().getSimpleName(), _hennaList.size());
 	}
 	
 	@Override

+ 8 - 12
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/HitConditionBonusData.java

@@ -22,7 +22,6 @@ import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
-import com.l2jserver.Config;
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.util.data.xml.IXmlReader;
@@ -53,17 +52,14 @@ public final class HitConditionBonusData implements IXmlReader
 	public void load()
 	{
 		parseDatapackFile("data/stats/hitConditionBonus.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded Hit Condition bonuses.");
-		if (Config.DEBUG)
-		{
-			LOGGER.info(getClass().getSimpleName() + ": Front bonus: " + frontBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Side bonus: " + sideBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Back bonus: " + backBonus);
-			LOGGER.info(getClass().getSimpleName() + ": High bonus: " + highBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Low bonus: " + lowBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Dark bonus: " + darkBonus);
-			LOGGER.info(getClass().getSimpleName() + ": Rain bonus: " + rainBonus);
-		}
+		LOGGER.info("{}: Loaded Hit Condition bonuses.", getClass().getSimpleName());
+		LOGGER.debug("{}: Front bonus: {}", getClass().getSimpleName(), frontBonus);
+		LOGGER.debug("{}: Side bonus: {}", getClass().getSimpleName(), sideBonus);
+		LOGGER.debug("{}: Back bonus: {}", getClass().getSimpleName(), backBonus);
+		LOGGER.debug("{}: High bonus: {}", getClass().getSimpleName(), highBonus);
+		LOGGER.debug("{}: Low bonus: {}", getClass().getSimpleName(), lowBonus);
+		LOGGER.debug("{}: Dark bonus: {}", getClass().getSimpleName(), darkBonus);
+		LOGGER.debug("{}: Rain bonus: {}", getClass().getSimpleName(), rainBonus);
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialEquipmentData.java

@@ -57,7 +57,7 @@ public final class InitialEquipmentData implements IXmlReader
 	{
 		_initialEquipmentList.clear();
 		parseDatapackFile(Config.INITIAL_EQUIPMENT_EVENT ? EVENT : NORMAL);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _initialEquipmentList.size() + " Initial Equipment data.");
+		LOGGER.info("{}: Loaded {} Initial Equipment data.", getClass().getSimpleName(), _initialEquipmentList.size());
 	}
 	
 	@Override

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/InitialShortcutData.java

@@ -65,9 +65,9 @@ public final class InitialShortcutData implements IXmlReader
 		
 		parseDatapackFile("data/stats/initialShortcuts.xml");
 		
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _initialGlobalShortcutList.size() + " Initial Global Shortcuts data.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _initialShortcutData.size() + " Initial Shortcuts data.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _macroPresets.size() + " Macros presets.");
+		LOGGER.info("{}: Loaded {} Initial Global Shortcuts data.", getClass().getSimpleName(), _initialGlobalShortcutList.size());
+		LOGGER.info("{}: Loaded {} Initial Shortcuts data.", getClass().getSimpleName(), _initialShortcutData.size());
+		LOGGER.info("{}: Loaded {} Macros presets.", getClass().getSimpleName(), _macroPresets.size());
 	}
 	
 	@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/KarmaData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -29,6 +28,7 @@ import org.w3c.dom.Node;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Karma data.
  * @author UnAfraid
  */
 public class KarmaData implements IXmlReader
@@ -45,7 +45,7 @@ public class KarmaData implements IXmlReader
 	{
 		_karmaTable.clear();
 		parseDatapackFile("data/stats/chars/pcKarmaIncrease.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + _karmaTable.size() + " karma modifiers.");
+		LOGGER.info("{}: Loaded {} karma modifiers.", getClass().getSimpleName(), _karmaTable.size());
 	}
 	
 	@Override

+ 8 - 10
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/MultisellData.java

@@ -23,7 +23,6 @@ import java.io.FileFilter;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -75,7 +74,7 @@ public final class MultisellData implements IXmlReader
 		}
 		
 		verify();
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + _entries.size() + " multisell lists.");
+		LOGGER.info("{}: Loaded {} multisell lists.", getClass().getSimpleName(), _entries.size());
 	}
 	
 	@Override
@@ -109,21 +108,20 @@ public final class MultisellData implements IXmlReader
 						}
 						catch (NumberFormatException e)
 						{
-							
 							try
 							{
 								list.setUseRate(Config.class.getField(att.getNodeValue()).getDouble(Config.class));
 							}
 							catch (Exception e1)
 							{
-								LOGGER.warning(e1.getMessage() + doc.getLocalName());
+								LOGGER.warn("{}: Unable to parse {}", getClass().getSimpleName(), doc.getLocalName(), e1);
 								list.setUseRate(1.0);
 							}
 							
 						}
 						catch (DOMException e)
 						{
-							LOGGER.warning(e.getMessage() + doc.getLocalName());
+							LOGGER.warn("{}: Unable to parse {}", getClass().getSimpleName(), doc.getLocalName(), e);
 						}
 					}
 					
@@ -157,7 +155,7 @@ public final class MultisellData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.SEVERE, getClass().getSimpleName() + ": Error in file " + f, e);
+			LOGGER.error("{}: Error in file {}", getClass().getSimpleName(), f, e);
 		}
 	}
 	
@@ -239,13 +237,13 @@ public final class MultisellData implements IXmlReader
 		ListContainer template = _entries.get(listId);
 		if (template == null)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": can't find list id: " + listId + " requested by player: " + player.getName() + ", npcId:" + (npc != null ? npc.getId() : 0));
+			LOGGER.warn("{}: Cannot find list ID: {} requested by player: {}, NPC ID: {}!", getClass().getSimpleName(), listId, player, (npc != null ? npc.getId() : 0));
 			return;
 		}
 		
 		if (((npc != null) && !template.isNpcAllowed(npc.getId())) || ((npc == null) && template.isNpcOnly()))
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": player " + player + " attempted to open multisell " + listId + " from npc " + npc + " which is not allowed!");
+			LOGGER.warn("{}: Player {} attempted to open multisell {} from npc {} which is not allowed!", getClass().getSimpleName(), player, listId, npc);
 			return;
 		}
 		
@@ -360,14 +358,14 @@ public final class MultisellData implements IXmlReader
 				{
 					if (!verifyIngredient(ing))
 					{
-						LOGGER.warning(getClass().getSimpleName() + ": can't find ingredient with itemId: " + ing.getItemId() + " in list: " + list.getListId());
+						LOGGER.warn("{}: Cannot find ingredient with item ID: {} in list: {}!", getClass().getSimpleName(), ing.getItemId(), list.getListId());
 					}
 				}
 				for (Ingredient ing : ent.getProducts())
 				{
 					if (!verifyIngredient(ing))
 					{
-						LOGGER.warning(getClass().getSimpleName() + ": can't find product with itemId: " + ing.getItemId() + " in list: " + list.getListId());
+						LOGGER.warn("{}: Cannot find product with item ID: {} in list: {}!", getClass().getSimpleName(), ing.getItemId(), list.getListId());
 					}
 				}
 			}

+ 5 - 5
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/NpcData.java

@@ -73,13 +73,13 @@ public class NpcData implements IXmlReader
 		_minionData = new MinionData();
 		
 		parseDatapackDirectory("data/stats/npcs", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _npcs.size() + " NPCs.");
+		LOGGER.info("{}: Loaded {} NPCs.", getClass().getSimpleName(), _npcs.size());
 		
 		if (Config.CUSTOM_NPC_DATA)
 		{
 			final int npcCount = _npcs.size();
 			parseDatapackDirectory("data/stats/npcs/custom", true);
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_npcs.size() - npcCount) + " Custom NPCs.");
+			LOGGER.info("{}: Loaded {} custom NPCs.", getClass().getSimpleName(), (_npcs.size() - npcCount));
 		}
 		
 		_minionData = null;
@@ -339,7 +339,7 @@ public class NpcData implements IXmlReader
 											}
 											else
 											{
-												LOGGER.warning("[" + f.getName() + "] skill not found. NPC ID: " + npcId + " Skill ID:" + skillId + " Skill Level: " + skillLevel);
+												LOGGER.warn("[{}] skill not found. NPC ID: {} Skill ID: {} Skill Level: {}!", f.getName(), npcId, skillId, skillLevel);
 											}
 										}
 									}
@@ -647,7 +647,7 @@ public class NpcData implements IXmlReader
 						}
 						else
 						{
-							LOGGER.warning("[" + f + "] grouped general drop item supports only general drop item.");
+							LOGGER.warn("[{}] grouped general drop item supports only general drop item.", f);
 						}
 					}
 					dropItem.setItems(items);
@@ -820,7 +820,7 @@ public class NpcData implements IXmlReader
 		{
 			_tempMinions.clear();
 			parseDatapackFile("data/minionData.xml");
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + _tempMinions.size() + " minions data.");
+			LOGGER.info("{}: Loaded {} minions data.", getClass().getSimpleName(), _tempMinions.size());
 		}
 		
 		@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/OptionData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -35,6 +34,7 @@ import com.l2jserver.gameserver.model.stats.functions.FuncTemplate;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Item Option data.
  * @author UnAfraid
  */
 public class OptionData implements IXmlReader
@@ -51,7 +51,7 @@ public class OptionData implements IXmlReader
 	{
 		_optionData.clear();
 		parseDatapackDirectory("data/stats/options", false);
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _optionData.size() + " Options.");
+		LOGGER.info("{}: Loaded: {} Options.", getClass().getSimpleName(), _optionData.size());
 	}
 	
 	@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PetDataTable.java

@@ -53,7 +53,7 @@ public final class PetDataTable implements IXmlReader
 	{
 		_pets.clear();
 		parseDatapackDirectory("data/stats/pets", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _pets.size() + " Pets.");
+		LOGGER.info("{}: Loaded {} Pets.", getClass().getSimpleName(), _pets.size());
 	}
 	
 	@Override
@@ -192,7 +192,7 @@ public final class PetDataTable implements IXmlReader
 	{
 		if (!_pets.containsKey(petId))
 		{
-			LOGGER.info(getClass().getSimpleName() + ": Missing pet data for npcid: " + petId);
+			LOGGER.info("{}: Missing pet data for NPC ID {}!", getClass().getSimpleName(), petId);
 		}
 		return _pets.get(petId);
 	}

+ 2 - 5
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerTemplateData.java

@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -40,8 +39,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class PlayerTemplateData implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(PlayerTemplateData.class.getName());
-	
 	private final Map<ClassId, L2PcTemplate> _playerTemplates = new HashMap<>();
 	
 	private int _dataCount = 0;
@@ -56,8 +53,8 @@ public final class PlayerTemplateData implements IXmlReader
 	{
 		_playerTemplates.clear();
 		parseDatapackDirectory("data/stats/chars/baseStats", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _playerTemplates.size() + " character templates.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _dataCount + " level up gain records.");
+		LOGGER.info("{}: Loaded {} character templates.", getClass().getSimpleName(), _playerTemplates.size());
+		LOGGER.info("{}: Loaded {} level up gain records.", getClass().getSimpleName(), _dataCount);
 	}
 	
 	@Override

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/PlayerXpPercentLostData.java

@@ -70,7 +70,7 @@ public final class PlayerXpPercentLostData implements IXmlReader
 	{
 		if (level > _maxlevel)
 		{
-			LOGGER.warning("Require to high level inside PlayerXpPercentLostData (" + level + ")");
+			LOGGER.warn("Require to high level inside PlayerXpPercentLostData ({})", level);
 			return _playerXpPercentLost[_maxlevel];
 		}
 		return _playerXpPercentLost[level];

+ 9 - 9
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/RecipeData.java

@@ -55,7 +55,7 @@ public class RecipeData implements IXmlReader
 	{
 		_recipes.clear();
 		parseDatapackFile("data/recipes.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _recipes.size() + " recipes.");
+		LOGGER.info("{}: Loaded {} recipes.", getClass().getSimpleName(), _recipes.size());
 	}
 	
 	@Override
@@ -85,7 +85,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("id");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing id for recipe item, skipping");
+							LOGGER.error("{}: Missing id for recipe item, skipping!", getClass().getSimpleName());
 							continue;
 						}
 						id = Integer.parseInt(att.getNodeValue());
@@ -94,7 +94,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("recipeId");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing recipeId for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing recipeId for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("recipeId", Integer.parseInt(att.getNodeValue()));
@@ -102,7 +102,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("name");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing name for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing name for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("recipeName", att.getNodeValue());
@@ -110,7 +110,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("craftLevel");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing level for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing level for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("craftLevel", Integer.parseInt(att.getNodeValue()));
@@ -118,7 +118,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("type");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing type for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing type for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("isDwarvenRecipe", att.getNodeValue().equalsIgnoreCase("dwarven"));
@@ -126,7 +126,7 @@ public class RecipeData implements IXmlReader
 						att = attrs.getNamedItem("successRate");
 						if (att == null)
 						{
-							LOGGER.severe(getClass().getSimpleName() + ": Missing successRate for recipe item id: " + id + ", skipping");
+							LOGGER.error("{}: Missing successRate for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 							continue;
 						}
 						set.set("successRate", Integer.parseInt(att.getNodeValue()));
@@ -143,7 +143,7 @@ public class RecipeData implements IXmlReader
 								}
 								catch (Exception e)
 								{
-									LOGGER.severe(getClass().getSimpleName() + ": Error in StatUse parameter for recipe item id: " + id + ", skipping");
+									LOGGER.error("{}: Error in StatUse parameter for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 									continue RECIPES_FILE;
 								}
 							}
@@ -157,7 +157,7 @@ public class RecipeData implements IXmlReader
 								}
 								catch (Exception e)
 								{
-									LOGGER.severe(getClass().getSimpleName() + ": Error in AltStatChange parameter for recipe item id: " + id + ", skipping");
+									LOGGER.error("{}: Error in AltStatChange parameter for recipe item ID: {}, skipping!", getClass().getSimpleName(), id);
 									continue RECIPES_FILE;
 								}
 							}

+ 3 - 3
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SecondaryAuthData.java

@@ -21,7 +21,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 import java.io.File;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -29,6 +28,7 @@ import org.w3c.dom.Node;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Secondary Auth data.
  * @author NosBit
  */
 public class SecondaryAuthData implements IXmlReader
@@ -49,7 +49,7 @@ public class SecondaryAuthData implements IXmlReader
 	{
 		_forbiddenPasswords.clear();
 		parseFile(new File("config/SecondaryAuth.xml"));
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _forbiddenPasswords.size() + " forbidden passwords.");
+		LOGGER.info("{}: Loaded {} forbidden passwords.", getClass().getSimpleName(), _forbiddenPasswords.size());
 	}
 	
 	@Override
@@ -95,7 +95,7 @@ public class SecondaryAuthData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "Failed to load secondary auth data from xml.", e);
+			LOGGER.warn("Failed to load secondary auth data from xml.", e);
 		}
 	}
 	

+ 4 - 4
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SiegeScheduleData.java

@@ -21,7 +21,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -33,6 +32,7 @@ import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Siege Schedule data.
  * @author UnAfraid
  */
 public class SiegeScheduleData implements IXmlReader
@@ -49,11 +49,11 @@ public class SiegeScheduleData implements IXmlReader
 	{
 		_scheduleData.clear();
 		parseDatapackFile("config/SiegeSchedule.xml");
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _scheduleData.size() + " siege schedulers.");
+		LOGGER.info("{}: Loaded: {} siege schedulers.", getClass().getSimpleName(), _scheduleData.size());
 		if (_scheduleData.isEmpty())
 		{
 			_scheduleData.add(new SiegeScheduleDate(new StatsSet()));
-			LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Emergency Loaded: " + _scheduleData.size() + " default siege schedulers.");
+			LOGGER.info("{}: Emergency Loaded: {} default siege schedulers.", getClass().getSimpleName(), _scheduleData.size());
 		}
 	}
 	
@@ -103,7 +103,7 @@ public class SiegeScheduleData implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, "", e);
+			LOGGER.warn("{}: Unable to get value!", getClass().getSimpleName(), e);
 			return -1;
 		}
 	}

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillLearnData.java

@@ -30,7 +30,7 @@ import com.l2jserver.gameserver.model.base.ClassId;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
- * Holds all skill learn data for all npcs.
+ * Holds all skill learn data for all NPCs.
  * @author xban1x
  */
 public final class SkillLearnData implements IXmlReader
@@ -47,7 +47,7 @@ public final class SkillLearnData implements IXmlReader
 	{
 		_skillLearn.clear();
 		parseDatapackFile("data/skillLearn.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _skillLearn.size() + " Skill Learn data.");
+		LOGGER.info("{}: Loaded {} Skill Learn data.", getClass().getSimpleName(), _skillLearn.size());
 	}
 	
 	@Override

+ 17 - 17
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/SkillTreesData.java

@@ -291,7 +291,7 @@ public final class SkillTreesData implements IXmlReader
 									}
 									default:
 									{
-										LOGGER.warning(getClass().getSimpleName() + ": Unknown Skill Tree type: " + type + "!");
+										LOGGER.warn("{}: Unknown Skill Tree type: {}!", getClass().getSimpleName(), type);
 									}
 								}
 							}
@@ -517,7 +517,7 @@ public final class SkillTreesData implements IXmlReader
 		if (skills.isEmpty())
 		{
 			// The Skill Tree for this class is undefined.
-			LOGGER.warning(getClass().getSimpleName() + ": Skilltree for class " + classId + " is not defined!");
+			LOGGER.warn("{}: Skilltree for class {} is not defined!", getClass().getSimpleName(), classId);
 			return result;
 		}
 		
@@ -578,7 +578,7 @@ public final class SkillTreesData implements IXmlReader
 		if (skills.isEmpty())
 		{
 			// The Skill Tree for this class is undefined, so we return an empty list.
-			LOGGER.warning(getClass().getSimpleName() + ": Skill Tree for this class Id(" + player.getClassId() + ") is not defined!");
+			LOGGER.warn("{}: Skill Tree for class ID {} is not defined!", getClass().getSimpleName(), player.getClassId());
 			return result;
 		}
 		
@@ -1034,7 +1034,7 @@ public final class SkillTreesData implements IXmlReader
 		int minLevel = 0;
 		if (skillTree.isEmpty())
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": SkillTree is not defined for getMinLevelForNewSkill!");
+			LOGGER.warn("{}: SkillTree is not defined for getMinLevelForNewSkill!", getClass().getSimpleName());
 		}
 		else
 		{
@@ -1312,22 +1312,22 @@ public final class SkillTreesData implements IXmlReader
 		}
 		
 		final String className = getClass().getSimpleName();
-		LOGGER.info(className + ": Loaded " + classSkillTreeCount + " Class Skills for " + _classSkillTrees.size() + " Class Skill Trees.");
-		LOGGER.info(className + ": Loaded " + _subClassSkillTree.size() + " Sub-Class Skills.");
-		LOGGER.info(className + ": Loaded " + trasferSkillTreeCount + " Transfer Skills for " + _transferSkillTrees.size() + " Transfer Skill Trees.");
-		LOGGER.info(className + ": Loaded " + _fishingSkillTree.size() + " Fishing Skills, " + dwarvenOnlyFishingSkillCount + " Dwarven only Fishing Skills.");
-		LOGGER.info(className + ": Loaded " + _collectSkillTree.size() + " Collect Skills.");
-		LOGGER.info(className + ": Loaded " + _pledgeSkillTree.size() + " Pledge Skills, " + (_pledgeSkillTree.size() - resSkillCount) + " for Pledge and " + resSkillCount + " Residential.");
-		LOGGER.info(className + ": Loaded " + _subPledgeSkillTree.size() + " Sub-Pledge Skills.");
-		LOGGER.info(className + ": Loaded " + _transformSkillTree.size() + " Transform Skills.");
-		LOGGER.info(className + ": Loaded " + _nobleSkillTree.size() + " Noble Skills.");
-		LOGGER.info(className + ": Loaded " + _heroSkillTree.size() + " Hero Skills.");
-		LOGGER.info(className + ": Loaded " + _gameMasterSkillTree.size() + " Game Master Skills.");
-		LOGGER.info(className + ": Loaded " + _gameMasterAuraSkillTree.size() + " Game Master Aura Skills.");
+		LOGGER.info("{}: Loaded {} Class Skills for {} Class Skill Trees.", className, classSkillTreeCount, _classSkillTrees.size());
+		LOGGER.info("{}: Loaded {} Sub-Class Skills.", className, _subClassSkillTree.size());
+		LOGGER.info("{}: Loaded {} Transfer Skills for {} Transfer Skill Trees.", className, trasferSkillTreeCount, _transferSkillTrees.size());
+		LOGGER.info("{}: Loaded {} Fishing Skills, {} Dwarven only Fishing Skills.", className, _fishingSkillTree.size(), dwarvenOnlyFishingSkillCount);
+		LOGGER.info("{}: Loaded {} Collect Skills.", className, _collectSkillTree.size());
+		LOGGER.info("{}: Loaded {} Pledge Skills, {} for Pledge and {} Residential.", className, _pledgeSkillTree.size(), (_pledgeSkillTree.size() - resSkillCount), resSkillCount);
+		LOGGER.info("{}: Loaded {} Sub-Pledge Skills.", className, _subPledgeSkillTree.size());
+		LOGGER.info("{}: Loaded {} Transform Skills.", className, _transformSkillTree.size());
+		LOGGER.info("{}: Loaded {} Noble Skills.", className, _nobleSkillTree.size());
+		LOGGER.info("{}: Loaded {} Hero Skills.", className, _heroSkillTree.size());
+		LOGGER.info("{}: Loaded {} Game Master Skills.", className, _gameMasterSkillTree.size());
+		LOGGER.info("{}: Loaded {} Game Master Aura Skills.", className, _gameMasterAuraSkillTree.size());
 		final int commonSkills = _commonSkillTree.size();
 		if (commonSkills > 0)
 		{
-			LOGGER.info(className + ": Loaded " + commonSkills + " Common Skills to all classes.");
+			LOGGER.info("{}: Loaded {} Common Skills to all classes.", className, commonSkills);
 		}
 	}
 	

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/StaticObjectData.java

@@ -52,7 +52,7 @@ public final class StaticObjectData implements IXmlReader
 	{
 		_staticObjects.clear();
 		parseDatapackFile("data/staticObjects.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _staticObjects.size() + " static object templates.");
+		LOGGER.info("{}: Loaded {} static object templates.", getClass().getSimpleName(), _staticObjects.size());
 	}
 	
 	@Override

+ 2 - 2
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/TransformData.java

@@ -20,7 +20,6 @@ package com.l2jserver.gameserver.data.xml.impl;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -38,6 +37,7 @@ import com.l2jserver.gameserver.network.serverpackets.ExBasicActionList;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Transformation data.
  * @author UnAfraid
  */
 public final class TransformData implements IXmlReader
@@ -54,7 +54,7 @@ public final class TransformData implements IXmlReader
 	{
 		_transformData.clear();
 		parseDatapackDirectory("data/stats/transformations", false);
-		LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _transformData.size() + " transform templates.");
+		LOGGER.info("{}: Loaded: {} transform templates.", getClass().getSimpleName(), _transformData.size());
 	}
 	
 	@Override

+ 1 - 4
L2J_Server/java/com/l2jserver/gameserver/data/xml/impl/UIData.java

@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -36,8 +35,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public class UIData implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(UIData.class.getName());
-	
 	private final Map<Integer, List<ActionKey>> _storedKeys = new HashMap<>();
 	private final Map<Integer, List<Integer>> _storedCategories = new HashMap<>();
 	
@@ -52,7 +49,7 @@ public class UIData implements IXmlReader
 		_storedKeys.clear();
 		_storedCategories.clear();
 		parseDatapackFile("data/ui/ui_en.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _storedKeys.size() + " keys " + _storedCategories.size() + " categories.");
+		LOGGER.info("{}: Loaded {} keys {} categories.", getClass().getSimpleName(), _storedKeys.size(), _storedCategories.size());
 	}
 	
 	@Override

+ 10 - 15
L2J_Server/java/com/l2jserver/gameserver/datatables/SpawnTable.java

@@ -28,8 +28,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -51,7 +49,6 @@ import com.l2jserver.util.data.xml.IXmlReader;
  */
 public final class SpawnTable implements IXmlReader
 {
-	private static final Logger LOGGER = Logger.getLogger(SpawnTable.class.getName());
 	// SQL
 	private static final String SELECT_SPAWNS = "SELECT count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay FROM spawnlist";
 	private static final String SELECT_CUSTOM_SPAWNS = "SELECT count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay FROM custom_spawnlist";
@@ -70,30 +67,30 @@ public final class SpawnTable implements IXmlReader
 		{
 			fillSpawnTable(false);
 			final int spawnCount = _spawnTable.size();
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + spawnCount + " npc spawns.");
+			LOGGER.info("{}: Loaded " + spawnCount + " npc spawns.", getClass().getSimpleName());
 			if (Config.CUSTOM_SPAWNLIST_TABLE)
 			{
 				fillSpawnTable(true);
-				LOGGER.info(getClass().getSimpleName() + ": Loaded " + (_spawnTable.size() - spawnCount) + " custom npc spawns.");
+				LOGGER.info("{}: Loaded " + (_spawnTable.size() - spawnCount) + " custom npc spawns.", getClass().getSimpleName());
 			}
 			
 			// Load XML list
 			parseDatapackDirectory("data/spawnlist", false);
-			LOGGER.info(getClass().getSimpleName() + ": Loaded " + _xmlSpawnCount + " npc spawns from XML.");
+			LOGGER.info("{}: Loaded " + _xmlSpawnCount + " npc spawns from XML.", getClass().getSimpleName());
 		}
 	}
 	
 	/**
 	 * Verifies if the template exists and it's spawnable.
 	 * @param npcId the NPC ID
-	 * @return {@code true} if the NPC ID belongs to an spawnable tempalte, {@code false} otherwise
+	 * @return {@code true} if the NPC ID belongs to an spawnable template, {@code false} otherwise
 	 */
 	private boolean checkTemplate(int npcId)
 	{
 		L2NpcTemplate npcTemplate = NpcData.getInstance().getTemplate(npcId);
 		if (npcTemplate == null)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Data missing in NPC table for ID: " + npcId + ".");
+			LOGGER.warn("{}: Data missing in NPC table for ID: {}.", getClass().getSimpleName(), npcId);
 			return false;
 		}
 		
@@ -194,7 +191,7 @@ public final class SpawnTable implements IXmlReader
 								
 								if ((x == 0) && (y == 0) && (territoryName == null)) // Both coordinates and zone are unspecified
 								{
-									LOGGER.warning("XML Spawnlist: Spawn could not be initialized, both coordinates and zone are unspecified for ID " + templateId);
+									LOGGER.warn("{}: Spawn could not be initialized, both coordinates and zone are unspecified for ID {}", getClass().getSimpleName(), templateId);
 									continue;
 								}
 								
@@ -285,7 +282,7 @@ public final class SpawnTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Spawn could not be initialized: " + e.getMessage(), e);
+			LOGGER.warn("{}: Spawn could not be initialized!", getClass().getSimpleName(), e);
 		}
 		return npcSpawnCount;
 	}
@@ -342,10 +339,8 @@ public final class SpawnTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			// problem with initializing spawn, go to next one
-			LOGGER.log(Level.WARNING, "Spawn could not be initialized: " + e.getMessage(), e);
+			LOGGER.warn("{}: Spawn could not be initialized!", getClass().getSimpleName(), e);
 		}
-		
 		return ret;
 	}
 	
@@ -426,7 +421,7 @@ public final class SpawnTable implements IXmlReader
 			}
 			catch (Exception e)
 			{
-				LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Could not store spawn in the DB:" + e.getMessage(), e);
+				LOGGER.warn("{}: Could not store spawn in the DB!", getClass().getSimpleName(), e);
 			}
 		}
 	}
@@ -457,7 +452,7 @@ public final class SpawnTable implements IXmlReader
 			}
 			catch (Exception e)
 			{
-				LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Spawn " + spawn + " could not be removed from DB: " + e.getMessage(), e);
+				LOGGER.warn("{}: Spawn {} could not be removed from DB!", getClass().getSimpleName(), spawn, e);
 			}
 		}
 	}

+ 14 - 14
L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManorManager.java

@@ -110,13 +110,13 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			// Send debug message
 			if (Config.DEBUG)
 			{
-				LOGGER.info(getClass().getSimpleName() + ": Current mode " + _mode.toString());
+				LOGGER.info("{}: Current mode {}", getClass().getSimpleName(), _mode.toString());
 			}
 		}
 		else
 		{
 			_mode = ManorMode.DISABLED;
-			LOGGER.info(getClass().getSimpleName() + ": Manor system is deactivated.");
+			LOGGER.info("{}: Manor system is deactivated.", getClass().getSimpleName());
 		}
 	}
 	
@@ -124,7 +124,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 	public final void load()
 	{
 		parseDatapackFile("data/seeds.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _seeds.size() + " seeds.");
+		LOGGER.info("{}: Loaded {} seeds.", getClass().getSimpleName(), _seeds.size());
 	}
 	
 	@Override
@@ -201,7 +201,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 						}
 						else
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": Unknown seed id: " + seedId + "!");
+							LOGGER.warn("{}: Unknown seed ID: {}!", getClass().getSimpleName(), seedId);
 						}
 					}
 				}
@@ -232,18 +232,18 @@ public final class CastleManorManager implements IXmlReader, IStorable
 						}
 						else
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": Unknown crop id: " + cropId + "!");
+							LOGGER.warn("{}: Unknown crop ID: {}!", getClass().getSimpleName(), cropId);
 						}
 					}
 				}
 				_procure.put(castleId, current);
 				_procureNext.put(castleId, next);
 			}
-			LOGGER.info(getClass().getSimpleName() + ": Manor data loaded.");
+			LOGGER.info("{}: Manor data loaded.", getClass().getSimpleName());
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Unable to load manor data! " + e.getMessage());
+			LOGGER.warn("{}: Unable to load manor data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -429,7 +429,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		scheduleModeChange();
 		if (Config.DEBUG)
 		{
-			LOGGER.info(getClass().getName() + ": Manor mode changed to " + _mode.toString() + "!");
+			LOGGER.info("{}: Manor mode changed to {}!", getClass().getSimpleName(), _mode);
 		}
 	}
 	
@@ -464,7 +464,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			}
 			catch (Exception e)
 			{
-				LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+				LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			}
 		}
 	}
@@ -501,7 +501,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			}
 			catch (Exception e)
 			{
-				LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+				LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			}
 		}
 	}
@@ -522,7 +522,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		}
 		catch (Exception e)
 		{
-			LOGGER.info(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+			LOGGER.info("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -542,7 +542,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		}
 		catch (Exception e)
 		{
-			LOGGER.info(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+			LOGGER.info("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -685,7 +685,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+			LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			return false;
 		}
 	}
@@ -713,7 +713,7 @@ public final class CastleManorManager implements IXmlReader, IStorable
 			}
 			catch (Exception e)
 			{
-				LOGGER.severe(getClass().getSimpleName() + ": Unable to store manor data! " + e.getMessage());
+				LOGGER.error("{}: Unable to store manor data!", getClass().getSimpleName(), e);
 			}
 		}
 	}

+ 8 - 7
L2J_Server/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java

@@ -36,6 +36,7 @@ import com.l2jserver.gameserver.model.instancezone.InstanceWorld;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Instance Manager.
  * @author evill33t, GodKratos
  */
 public final class InstanceManager implements IXmlReader
@@ -55,10 +56,10 @@ public final class InstanceManager implements IXmlReader
 	{
 		// Creates the multiverse.
 		INSTANCES.put(-1, new Instance(-1, "multiverse"));
-		LOGGER.info(getClass().getSimpleName() + ": Multiverse Instance created.");
+		LOGGER.info("{}: Multiverse Instance created.", getClass().getSimpleName());
 		// Creates the universe.
 		INSTANCES.put(0, new Instance(0, "universe"));
-		LOGGER.info(getClass().getSimpleName() + ": Universe Instance created.");
+		LOGGER.info("{}: Universe Instance created.", getClass().getSimpleName());
 		load();
 	}
 	
@@ -67,7 +68,7 @@ public final class InstanceManager implements IXmlReader
 	{
 		_instanceIdNames.clear();
 		parseDatapackFile("data/instancenames.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _instanceIdNames.size() + " instance names.");
+		LOGGER.info("{}: Loaded {} instance names.", getClass().getSimpleName(), _instanceIdNames.size());
 	}
 	
 	/**
@@ -125,7 +126,7 @@ public final class InstanceManager implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not insert character instance time data: " + e.getMessage());
+			LOGGER.warn("{}: Could not insert character instance time data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -145,7 +146,7 @@ public final class InstanceManager implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not delete character instance time data: " + e.getMessage());
+			LOGGER.warn("{}: Could not delete character instance time data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -182,7 +183,7 @@ public final class InstanceManager implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not delete character instance time data: " + e.getMessage());
+			LOGGER.warn("{}: Could not delete character instance time data!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -359,7 +360,7 @@ public final class InstanceManager implements IXmlReader
 			_dynamic++;
 			if (_dynamic == Integer.MAX_VALUE)
 			{
-				LOGGER.warning(getClass().getSimpleName() + ": More then " + (Integer.MAX_VALUE - 300000) + " instances created");
+				LOGGER.warn("{}: More then {} instances has been created!", getClass().getSimpleName(), (Integer.MAX_VALUE - 300000));
 				_dynamic = 300000;
 			}
 		}

+ 2 - 1
L2J_Server/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java

@@ -45,6 +45,7 @@ import com.l2jserver.gameserver.model.zone.type.L2RespawnZone;
 import com.l2jserver.util.data.xml.IXmlReader;
 
 /**
+ * Map Region Manager.
  * @author Nyaran
  */
 public final class MapRegionManager implements IXmlReader
@@ -62,7 +63,7 @@ public final class MapRegionManager implements IXmlReader
 	{
 		_regions.clear();
 		parseDatapackDirectory("data/mapregion", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _regions.size() + " map regions.");
+		LOGGER.info("{}: Loaded {} map regions.", getClass().getSimpleName(), _regions.size());
 	}
 	
 	@Override

+ 5 - 5
L2J_Server/java/com/l2jserver/gameserver/instancemanager/WalkingManager.java

@@ -75,7 +75,7 @@ public final class WalkingManager implements IXmlReader
 	public final void load()
 	{
 		parseDatapackFile("data/Routes.xml");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _routes.size() + " walking routes.");
+		LOGGER.info("{}: Loaded {} walking routes.", getClass().getSimpleName(), _routes.size());
 	}
 	
 	@Override
@@ -138,7 +138,7 @@ public final class WalkingManager implements IXmlReader
 								npcString = NpcStringId.getNpcStringId(node.getNodeValue());
 								if (npcString == null)
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": Unknown npcString '" + node.getNodeValue() + "' for route '" + routeName + "'");
+									LOGGER.warn("{}: Unknown NPC String {} for route {}!", getClass().getSimpleName(), node.getNodeValue(), routeName);
 									continue;
 								}
 							}
@@ -150,7 +150,7 @@ public final class WalkingManager implements IXmlReader
 									npcString = NpcStringId.getNpcStringId(Integer.parseInt(node.getNodeValue()));
 									if (npcString == null)
 									{
-										LOGGER.warning(getClass().getSimpleName() + ": Unknown npcString '" + node.getNodeValue() + "' for route '" + routeName + "'");
+										LOGGER.warn("{}: Unknown npcString {} for route {}!", getClass().getSimpleName(), node.getNodeValue(), routeName);
 										continue;
 									}
 								}
@@ -175,7 +175,7 @@ public final class WalkingManager implements IXmlReader
 						}
 						catch (Exception e)
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": Error in target definition for route '" + routeName + "'");
+							LOGGER.warn("{}: Error in target definition for route {}!", getClass().getSimpleName(), routeName);
 						}
 					}
 				}
@@ -274,7 +274,7 @@ public final class WalkingManager implements IXmlReader
 					if (!npc.isInsideRadius(node, 3000, true, false))
 					{
 						final String message = "Route '" + routeName + "': NPC (id=" + npc.getId() + ", x=" + npc.getX() + ", y=" + npc.getY() + ", z=" + npc.getZ() + ") is too far from starting point (node x=" + node.getX() + ", y=" + node.getY() + ", z=" + node.getZ() + ", range=" + npc.calculateDistance(node, true, true) + "), walking will not start";
-						LOGGER.warning(getClass().getSimpleName() + ": " + message);
+						LOGGER.warn("{}: {}", getClass().getSimpleName(), message);
 						npc.sendDebugMessage(message);
 						return;
 					}

+ 18 - 22
L2J_Server/java/com/l2jserver/gameserver/instancemanager/ZoneManager.java

@@ -26,7 +26,6 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Level;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
@@ -102,7 +101,7 @@ public final class ZoneManager implements IXmlReader
 			}
 		}
 		GrandBossManager.getInstance().getZones().clear();
-		LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions.");
+		LOGGER.info("{}: Removed zones in " + count + " regions.", getClass().getSimpleName());
 		
 		// Load the zones
 		load();
@@ -155,7 +154,7 @@ public final class ZoneManager implements IXmlReader
 						}
 						else
 						{
-							LOGGER.warning("ZoneData: Missing type for zone in file: " + f.getName());
+							LOGGER.warn("ZoneData: Missing type for zone in file {}", f.getName());
 							continue;
 						}
 						
@@ -184,12 +183,12 @@ public final class ZoneManager implements IXmlReader
 						{
 							if (zoneName == null)
 							{
-								LOGGER.warning("ZoneData: Missing name for NpcSpawnTerritory in file: " + f.getName() + ", skipping zone");
+								LOGGER.warn("ZoneData: Missing name for NpcSpawnTerritory in file: {}, skipping zone!", f.getName());
 								continue;
 							}
 							else if (_spawnTerritories.containsKey(zoneName))
 							{
-								LOGGER.warning("ZoneData: Name " + zoneName + " already used for another zone, check file: " + f.getName() + ". Skipping zone");
+								LOGGER.warn("ZoneData: Name {} already used for another zone, check file {}, skipping zone!", zoneName, f.getName());
 								continue;
 							}
 						}
@@ -221,15 +220,12 @@ public final class ZoneManager implements IXmlReader
 							
 							if ((coords == null) || (coords.length == 0))
 							{
-								LOGGER.warning(getClass().getSimpleName() + ": ZoneData: missing data for zone: " + zoneId + " XML file: " + f.getName());
+								LOGGER.warn("{}: ZoneData: missing data for zone: {} XML file {}!", getClass().getSimpleName(), zoneId, f.getName());
 								continue;
 							}
 							
-							// Create this zone. Parsing for cuboids is a
-							// bit different than for other polygons
-							// cuboids need exactly 2 points to be defined.
-							// Other polygons need at least 3 (one per
-							// vertex)
+							// Create this zone. Parsing for cuboids is a bit different than for other polygons cuboids need exactly 2 points to be defined.
+							// Other polygons need at least 3 (one per vertex)
 							if (zoneShape.equalsIgnoreCase("Cuboid"))
 							{
 								if (coords.length == 2)
@@ -238,7 +234,7 @@ public final class ZoneManager implements IXmlReader
 								}
 								else
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Missing cuboid vertex in sql data for zone: " + zoneId + " in file: " + f.getName());
+									LOGGER.warn("{}: ZoneData: Missing cuboid vertex in sql data for zone: {} in file {}!", getClass().getSimpleName(), zoneId, f.getName());
 									continue;
 								}
 							}
@@ -258,7 +254,7 @@ public final class ZoneManager implements IXmlReader
 								}
 								else
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Bad data for zone: " + zoneId + " in file: " + f.getName());
+									LOGGER.warn("{}: ZoneData: Bad data for zone: {} in file {}!", getClass().getSimpleName(), zoneId, f.getName());
 									continue;
 								}
 							}
@@ -274,19 +270,19 @@ public final class ZoneManager implements IXmlReader
 								}
 								else
 								{
-									LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Bad data for zone: " + zoneId + " in file: " + f.getName());
+									LOGGER.warn("{}: ZoneData: Bad data for zone: {} in file {}!", getClass().getSimpleName(), zoneId, f.getName());
 									continue;
 								}
 							}
 							else
 							{
-								LOGGER.warning(getClass().getSimpleName() + ": ZoneData: Unknown shape: \"" + zoneShape + "\"  for zone: " + zoneId + " in file: " + f.getName());
+								LOGGER.warn("{}: ZoneData: Unknown shape: {}  for zone {} in file {}", getClass().getSimpleName(), zoneShape, zoneId, f.getName());
 								continue;
 							}
 						}
 						catch (Exception e)
 						{
-							LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": ZoneData: Failed to load zone " + zoneId + " coordinates: " + e.getMessage(), e);
+							LOGGER.warn("{}: ZoneData: Failed to load zone {} coordinates!", getClass().getSimpleName(), zoneId, e);
 						}
 						
 						// No further parameters needed, if NpcSpawnTerritory is loading
@@ -309,7 +305,7 @@ public final class ZoneManager implements IXmlReader
 						}
 						catch (Exception e)
 						{
-							LOGGER.warning(getClass().getSimpleName() + ": ZoneData: No such zone type: " + zoneType + " in file: " + f.getName());
+							LOGGER.warn("{}: ZoneData: No such zone type: {} in file {}!", getClass().getSimpleName(), zoneType, f.getName());
 							continue;
 						}
 						
@@ -342,9 +338,10 @@ public final class ZoneManager implements IXmlReader
 								((L2RespawnZone) temp).addRaceRespawnPoint(race, point);
 							}
 						}
+						
 						if (checkId(zoneId))
 						{
-							LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previos definition.");
+							LOGGER.debug("{}: Caution: Zone ({}) from file {} overrides previous definition.", getClass().getSimpleName(), zoneId, f.getName());
 						}
 						
 						if ((zoneName != null) && !zoneName.isEmpty())
@@ -354,8 +351,7 @@ public final class ZoneManager implements IXmlReader
 						
 						addZone(zoneId, temp);
 						
-						// Register the zone into any world region it
-						// intersects with...
+						// Register the zone into any world region it intersects with...
 						// currently 11136 test for each zone :>
 						int ax, ay, bx, by;
 						for (int x = 0; x < worldRegions.length; x++)
@@ -386,8 +382,8 @@ public final class ZoneManager implements IXmlReader
 		_spawnTerritories.clear();
 		parseDatapackDirectory("data/zones", false);
 		parseDatapackDirectory("data/zones/npcSpawnTerritories", false);
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _classZones.size() + " zone classes and " + getSize() + " zones.");
-		LOGGER.info(getClass().getSimpleName() + ": Loaded " + _spawnTerritories.size() + " NPC spawn territoriers.");
+		LOGGER.info("{}: Loaded {} zone classes and {} zones.", getClass().getSimpleName(), _classZones.size(), getSize());
+		LOGGER.info("{}: Loaded {} NPC spawn territoriers.", getClass().getSimpleName(), _spawnTerritories.size());
 	}
 	
 	/**

+ 6 - 6
L2J_Server/java/com/l2jserver/loginserver/GameServerTable.java

@@ -63,10 +63,10 @@ public final class GameServerTable implements IXmlReader
 		load();
 		
 		loadRegisteredGameServers();
-		LOGGER.info(GameServerTable.class.getSimpleName() + ": Loaded " + GAME_SERVER_TABLE.size() + " registered Game Servers");
+		LOGGER.info("{}: Loaded {} registered Game Servers.", getClass().getSimpleName(), GAME_SERVER_TABLE.size());
 		
 		initRSAKeys();
-		LOGGER.info(GameServerTable.class.getSimpleName() + ": Cached " + _keyPairs.length + " RSA keys for Game Server communication.");
+		LOGGER.info("{}: Cached {} RSA keys for Game Server communication.", getClass().getSimpleName(), _keyPairs.length);
 	}
 	
 	@Override
@@ -74,7 +74,7 @@ public final class GameServerTable implements IXmlReader
 	{
 		SERVER_NAMES.clear();
 		parseDatapackFile("data/servername.xml");
-		LOGGER.info(GameServerTable.class.getSimpleName() + ": Loaded " + SERVER_NAMES.size() + " server names");
+		LOGGER.info("{}: Loaded {} server names.", getClass().getSimpleName(), SERVER_NAMES.size());
 	}
 	
 	@Override
@@ -104,7 +104,7 @@ public final class GameServerTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(GameServerTable.class.getSimpleName() + ": Error loading RSA keys for Game Server communication!");
+			LOGGER.error("{}: Error loading RSA keys for Game Server communication!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -126,7 +126,7 @@ public final class GameServerTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(GameServerTable.class.getSimpleName() + ": Error loading registered game servers!");
+			LOGGER.error("{}: Error loading registered game servers!", getClass().getSimpleName(), e);
 		}
 	}
 	
@@ -230,7 +230,7 @@ public final class GameServerTable implements IXmlReader
 		}
 		catch (Exception e)
 		{
-			LOGGER.severe(GameServerTable.class.getSimpleName() + ": Error while saving gameserver!");
+			LOGGER.error("{}: Error while saving gameserver!", getClass().getSimpleName(), e);
 		}
 	}
 	

+ 9 - 8
L2J_Server/java/com/l2jserver/util/data/xml/IXmlReader.java

@@ -20,11 +20,12 @@ package com.l2jserver.util.data.xml;
 
 import java.io.File;
 import java.io.FileFilter;
-import java.util.logging.Logger;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -40,7 +41,7 @@ import com.l2jserver.util.file.filter.XMLFilter;
  */
 public interface IXmlReader
 {
-	static final Logger LOGGER = Logger.getLogger(IXmlReader.class.getName());
+	static final Logger LOGGER = LoggerFactory.getLogger(IXmlReader.class.getName());
 	
 	static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
 	static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
@@ -72,7 +73,7 @@ public interface IXmlReader
 	{
 		if (!getCurrentFileFilter().accept(f))
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not parse " + f.getName() + " is not a file or it doesn't exist!");
+			LOGGER.warn("{}: Could not parse {} is not a file or it doesn't exist!", getClass().getSimpleName(), f.getName());
 			return;
 		}
 		
@@ -89,12 +90,12 @@ public interface IXmlReader
 		}
 		catch (SAXParseException e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not parse file " + f.getName() + " at line " + e.getLineNumber() + ", column " + e.getColumnNumber() + ": " + e.getMessage());
+			LOGGER.warn("{}: Could not parse file {} at line {}, column {}", getClass().getSimpleName(), f.getName(), e.getLineNumber(), e.getColumnNumber(), e);
 			return;
 		}
 		catch (Exception e)
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Could not parse file " + f.getName() + ": " + e.getMessage());
+			LOGGER.warn("{}: Could not parse file {}", getClass().getSimpleName(), f.getName(), e);
 			return;
 		}
 	}
@@ -140,7 +141,7 @@ public interface IXmlReader
 	{
 		if (!dir.exists())
 		{
-			LOGGER.warning(getClass().getSimpleName() + ": Folder " + dir.getAbsolutePath() + " doesn't exist!");
+			LOGGER.warn("{}: Folder {} doesn't exist!", getClass().getSimpleName(), dir.getAbsolutePath());
 			return false;
 		}
 		
@@ -191,7 +192,7 @@ public interface IXmlReader
 	 */
 	default void parseDocument(Document doc)
 	{
-		LOGGER.severe("Parser not implemented!");
+		LOGGER.error("{}: Parser not implemented!", getClass().getSimpleName());
 	}
 	
 	/**
@@ -588,7 +589,7 @@ public interface IXmlReader
 		}
 		catch (IllegalArgumentException e)
 		{
-			LOGGER.warning("Invalid value specified for node: " + node.getNodeName() + " specified value: " + node.getNodeValue() + " should be enum value of \"" + clazz.getSimpleName() + "\" using default value: " + defaultValue);
+			LOGGER.warn("Invalid value specified for node: {} specified value: {} should be enum value of \"{}\" using default value: {}", node.getNodeName(), node.getNodeValue(), clazz.getSimpleName(), defaultValue);
 			return defaultValue;
 		}
 	}