aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Logging/Log.cpp
diff options
context:
space:
mode:
authorXanadu <none@none>2010-07-17 01:06:40 +0200
committerXanadu <none@none>2010-07-17 01:06:40 +0200
commit377d05e15d4d769fee22fae6070973a8fe186846 (patch)
treeb79ba842b078facedd3eb0b36cc81255ca219a8e /src/server/shared/Logging/Log.cpp
parent4c992095a96dfc2b5fab4567d5dd5c2e7e5ddec8 (diff)
Correctly redo file moves/renames from revs 8437, 8441, 8442, 8444, 8446, 8448, 8850.
--HG-- branch : trunk rename : src/server/authserver/AuthCodes.cpp => src/server/authserver/Authentication/AuthCodes.cpp rename : src/server/authserver/AuthCodes.h => src/server/authserver/Authentication/AuthCodes.h rename : src/server/authserver/RealmList.cpp => src/server/authserver/Realms/RealmList.cpp rename : src/server/authserver/RealmList.h => src/server/authserver/Realms/RealmList.h rename : src/server/authserver/AuthSocket.cpp => src/server/authserver/Server/AuthSocket.cpp rename : src/server/authserver/AuthSocket.h => src/server/authserver/Server/AuthSocket.h rename : src/server/authserver/RealmAcceptor.h => src/server/authserver/Server/RealmAcceptor.h rename : src/server/authserver/RealmSocket.cpp => src/server/authserver/Server/RealmSocket.cpp rename : src/server/authserver/RealmSocket.h => src/server/authserver/Server/RealmSocket.h rename : src/server/game/AI/CombatAI.cpp => src/server/game/AI/CoreAI/CombatAI.cpp rename : src/server/game/AI/CombatAI.h => src/server/game/AI/CoreAI/CombatAI.h rename : src/server/game/AI/GuardAI.cpp => src/server/game/AI/CoreAI/GuardAI.cpp rename : src/server/game/AI/GuardAI.h => src/server/game/AI/CoreAI/GuardAI.h rename : src/server/game/AI/PassiveAI.cpp => src/server/game/AI/CoreAI/PassiveAI.cpp rename : src/server/game/AI/PassiveAI.h => src/server/game/AI/CoreAI/PassiveAI.h rename : src/server/game/AI/PetAI.cpp => src/server/game/AI/CoreAI/PetAI.cpp rename : src/server/game/AI/PetAI.h => src/server/game/AI/CoreAI/PetAI.h rename : src/server/game/AI/ReactorAI.cpp => src/server/game/AI/CoreAI/ReactorAI.cpp rename : src/server/game/AI/ReactorAI.h => src/server/game/AI/CoreAI/ReactorAI.h rename : src/server/game/AI/TotemAI.cpp => src/server/game/AI/CoreAI/TotemAI.cpp rename : src/server/game/AI/TotemAI.h => src/server/game/AI/CoreAI/TotemAI.h rename : src/server/game/AI/UnitAI.cpp => src/server/game/AI/CoreAI/UnitAI.cpp rename : src/server/game/AI/UnitAI.h => src/server/game/AI/CoreAI/UnitAI.h rename : src/server/game/Account/AccountMgr.cpp => src/server/game/Accounts/AccountMgr.cpp rename : src/server/game/Account/AccountMgr.h => src/server/game/Accounts/AccountMgr.h rename : src/server/game/AI/AuctionHouseBot/AuctionHouseBot.cpp => src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.cpp rename : src/server/game/AI/AuctionHouseBot/AuctionHouseBot.h => src/server/game/AuctionHouse/AuctionHouseBot/AuctionHouseBot.h rename : src/server/game/BattleGrounds/BattleGroundAA.cpp => src/server/game/BattleGrounds/Zones/BattleGroundAA.cpp rename : src/server/game/BattleGrounds/BattleGroundAA.h => src/server/game/BattleGrounds/Zones/BattleGroundAA.h rename : src/server/game/BattleGrounds/BattleGroundAB.cpp => src/server/game/BattleGrounds/Zones/BattleGroundAB.cpp rename : src/server/game/BattleGrounds/BattleGroundAB.h => src/server/game/BattleGrounds/Zones/BattleGroundAB.h rename : src/server/game/BattleGrounds/BattleGroundAV.cpp => src/server/game/BattleGrounds/Zones/BattleGroundAV.cpp rename : src/server/game/BattleGrounds/BattleGroundAV.h => src/server/game/BattleGrounds/Zones/BattleGroundAV.h rename : src/server/game/BattleGrounds/BattleGroundBE.cpp => src/server/game/BattleGrounds/Zones/BattleGroundBE.cpp rename : src/server/game/BattleGrounds/BattleGroundBE.h => src/server/game/BattleGrounds/Zones/BattleGroundBE.h rename : src/server/game/BattleGrounds/BattleGroundDS.cpp => src/server/game/BattleGrounds/Zones/BattleGroundDS.cpp rename : src/server/game/BattleGrounds/BattleGroundDS.h => src/server/game/BattleGrounds/Zones/BattleGroundDS.h rename : src/server/game/BattleGrounds/BattleGroundEY.cpp => src/server/game/BattleGrounds/Zones/BattleGroundEY.cpp rename : src/server/game/BattleGrounds/BattleGroundEY.h => src/server/game/BattleGrounds/Zones/BattleGroundEY.h rename : src/server/game/BattleGrounds/BattleGroundIC.cpp => src/server/game/BattleGrounds/Zones/BattleGroundIC.cpp rename : src/server/game/BattleGrounds/BattleGroundIC.h => src/server/game/BattleGrounds/Zones/BattleGroundIC.h rename : src/server/game/BattleGrounds/BattleGroundNA.cpp => src/server/game/BattleGrounds/Zones/BattleGroundNA.cpp rename : src/server/game/BattleGrounds/BattleGroundNA.h => src/server/game/BattleGrounds/Zones/BattleGroundNA.h rename : src/server/game/BattleGrounds/BattleGroundRB.cpp => src/server/game/BattleGrounds/Zones/BattleGroundRB.cpp rename : src/server/game/BattleGrounds/BattleGroundRB.h => src/server/game/BattleGrounds/Zones/BattleGroundRB.h rename : src/server/game/BattleGrounds/BattleGroundRL.cpp => src/server/game/BattleGrounds/Zones/BattleGroundRL.cpp rename : src/server/game/BattleGrounds/BattleGroundRL.h => src/server/game/BattleGrounds/Zones/BattleGroundRL.h rename : src/server/game/BattleGrounds/BattleGroundRV.cpp => src/server/game/BattleGrounds/Zones/BattleGroundRV.cpp rename : src/server/game/BattleGrounds/BattleGroundRV.h => src/server/game/BattleGrounds/Zones/BattleGroundRV.h rename : src/server/game/BattleGrounds/BattleGroundSA.cpp => src/server/game/BattleGrounds/Zones/BattleGroundSA.cpp rename : src/server/game/BattleGrounds/BattleGroundSA.h => src/server/game/BattleGrounds/Zones/BattleGroundSA.h rename : src/server/game/BattleGrounds/BattleGroundWS.cpp => src/server/game/BattleGrounds/Zones/BattleGroundWS.cpp rename : src/server/game/BattleGrounds/BattleGroundWS.h => src/server/game/BattleGrounds/Zones/BattleGroundWS.h rename : src/server/game/Chat/Channel.cpp => src/server/game/Chat/Channels/Channel.cpp rename : src/server/game/Chat/Channel.h => src/server/game/Chat/Channels/Channel.h rename : src/server/game/Chat/ChannelMgr.cpp => src/server/game/Chat/Channels/ChannelMgr.cpp rename : src/server/game/Chat/ChannelMgr.h => src/server/game/Chat/Channels/ChannelMgr.h rename : src/server/game/Chat/Debugcmds.cpp => src/server/game/Chat/Commands/Debugcmds.cpp rename : src/server/game/Chat/Level0.cpp => src/server/game/Chat/Commands/Level0.cpp rename : src/server/game/Chat/Level1.cpp => src/server/game/Chat/Commands/Level1.cpp rename : src/server/game/Chat/Level2.cpp => src/server/game/Chat/Commands/Level2.cpp rename : src/server/game/Chat/Level3.cpp => src/server/game/Chat/Commands/Level3.cpp rename : src/server/shared/vmap/BIH.cpp => src/server/game/CollisionDetection/BIH.cpp rename : src/server/shared/vmap/BIH.h => src/server/game/CollisionDetection/BIH.h rename : src/server/shared/vmap/CMakeLists.txt => src/server/game/CollisionDetection/CMakeLists.txt rename : src/server/shared/vmap/IVMapManager.h => src/server/game/CollisionDetection/IVMapManager.h rename : src/server/shared/vmap/MapTree.cpp => src/server/game/CollisionDetection/MapTree.cpp rename : src/server/shared/vmap/MapTree.h => src/server/game/CollisionDetection/MapTree.h rename : src/server/shared/vmap/ModelInstance.cpp => src/server/game/CollisionDetection/ModelInstance.cpp rename : src/server/shared/vmap/ModelInstance.h => src/server/game/CollisionDetection/ModelInstance.h rename : src/server/shared/vmap/TileAssembler.cpp => src/server/game/CollisionDetection/TileAssembler.cpp rename : src/server/shared/vmap/TileAssembler.h => src/server/game/CollisionDetection/TileAssembler.h rename : src/server/shared/vmap/VMapDefinitions.h => src/server/game/CollisionDetection/VMapDefinitions.h rename : src/server/shared/vmap/VMapFactory.cpp => src/server/game/CollisionDetection/VMapFactory.cpp rename : src/server/shared/vmap/VMapFactory.h => src/server/game/CollisionDetection/VMapFactory.h rename : src/server/shared/vmap/VMapManager2.cpp => src/server/game/CollisionDetection/VMapManager2.cpp rename : src/server/shared/vmap/VMapManager2.h => src/server/game/CollisionDetection/VMapManager2.h rename : src/server/shared/vmap/VMapTools.h => src/server/game/CollisionDetection/VMapTools.h rename : src/server/shared/vmap/WorldModel.cpp => src/server/game/CollisionDetection/WorldModel.cpp rename : src/server/shared/vmap/WorldModel.h => src/server/game/CollisionDetection/WorldModel.h rename : src/server/game/Events/UnitEvents.h => src/server/game/Combat/UnitEvents.h rename : src/server/game/ConditionMgr/ConditionMgr.cpp => src/server/game/Conditions/ConditionMgr.cpp rename : src/server/game/ConditionMgr/ConditionMgr.h => src/server/game/Conditions/ConditionMgr.h rename : src/server/game/LookingForGroup/LFG.h => src/server/game/DungeonFinding/LFG.h rename : src/server/game/LookingForGroup/LFGMgr.cpp => src/server/game/DungeonFinding/LFGMgr.cpp rename : src/server/game/LookingForGroup/LFGMgr.h => src/server/game/DungeonFinding/LFGMgr.h rename : src/server/game/Entities/Object/Corpse.cpp => src/server/game/Entities/Corpse/Corpse.cpp rename : src/server/game/Entities/Object/Corpse.h => src/server/game/Entities/Corpse/Corpse.h rename : src/server/game/Entities/Object/DynamicObject.cpp => src/server/game/Entities/DynamicObject/DynamicObject.cpp rename : src/server/game/Entities/Object/DynamicObject.h => src/server/game/Entities/DynamicObject/DynamicObject.h rename : src/server/game/Entities/Item/Bag.cpp => src/server/game/Entities/Item/Container/Bag.cpp rename : src/server/game/Entities/Item/Bag.h => src/server/game/Entities/Item/Container/Bag.h rename : src/server/game/Map/ObjectPosSelector.cpp => src/server/game/Entities/Object/ObjectPosSelector.cpp rename : src/server/game/Map/ObjectPosSelector.h => src/server/game/Entities/Object/ObjectPosSelector.h rename : src/server/game/Entities/Object/UpdateData.cpp => src/server/game/Entities/Object/Updates/UpdateData.cpp rename : src/server/game/Entities/Object/UpdateData.h => src/server/game/Entities/Object/Updates/UpdateData.h rename : src/server/game/Entities/Object/UpdateFields.h => src/server/game/Entities/Object/Updates/UpdateFields.h rename : src/server/game/Entities/Object/UpdateMask.h => src/server/game/Entities/Object/Updates/UpdateMask.h rename : src/server/game/Movement/Transports.cpp => src/server/game/Entities/Transport/Transports.cpp rename : src/server/game/Movement/Transports.h => src/server/game/Entities/Transport/Transports.h rename : src/server/game/Events/GlobalEvents.cpp => src/server/game/Globals/GlobalEvents.cpp rename : src/server/game/Events/GlobalEvents.h => src/server/game/Globals/GlobalEvents.h rename : src/server/game/Entities/Object/ObjectAccessor.cpp => src/server/game/Globals/ObjectAccessor.cpp rename : src/server/game/Entities/Object/ObjectAccessor.h => src/server/game/Globals/ObjectAccessor.h rename : src/server/game/Entities/Object/ObjectMgr.cpp => src/server/game/Globals/ObjectMgr.cpp rename : src/server/game/Entities/Object/ObjectMgr.h => src/server/game/Globals/ObjectMgr.h rename : src/server/game/Map/Cell/Cell.h => src/server/game/Maps/Cell/Cell.h rename : src/server/game/Map/Cell/CellImpl.h => src/server/game/Maps/Cell/CellImpl.h rename : src/server/game/Map/Grid/GridDefines.h => src/server/game/Maps/Grid/GridDefines.h rename : src/server/game/Map/Grid/GridNotifiers.cpp => src/server/game/Maps/Grid/GridNotifiers.cpp rename : src/server/game/Map/Grid/GridNotifiers.h => src/server/game/Maps/Grid/GridNotifiers.h rename : src/server/game/Map/Grid/GridNotifiersImpl.h => src/server/game/Maps/Grid/GridNotifiersImpl.h rename : src/server/game/Map/Grid/GridStates.cpp => src/server/game/Maps/Grid/GridStates.cpp rename : src/server/game/Map/Grid/GridStates.h => src/server/game/Maps/Grid/GridStates.h rename : src/server/game/Map/Grid/ObjectGridLoader.cpp => src/server/game/Maps/Grid/ObjectGridLoader.cpp rename : src/server/game/Map/Grid/ObjectGridLoader.h => src/server/game/Maps/Grid/ObjectGridLoader.h rename : src/server/game/Map/Map.cpp => src/server/game/Maps/Map.cpp rename : src/server/game/Map/Map.h => src/server/game/Maps/Map.h rename : src/server/game/Map/MapInstanced.cpp => src/server/game/Maps/MapInstanced.cpp rename : src/server/game/Map/MapInstanced.h => src/server/game/Maps/MapInstanced.h rename : src/server/game/Map/MapManager.cpp => src/server/game/Maps/MapManager.cpp rename : src/server/game/Map/MapManager.h => src/server/game/Maps/MapManager.h rename : src/server/game/Map/MapRefManager.h => src/server/game/Maps/MapRefManager.h rename : src/server/game/Map/MapReference.h => src/server/game/Maps/MapReference.h rename : src/server/game/Map/MapUpdater.cpp => src/server/game/Maps/MapUpdater.cpp rename : src/server/game/Map/MapUpdater.h => src/server/game/Maps/MapUpdater.h rename : src/server/game/Map/ZoneScript.h => src/server/game/Maps/ZoneScript.h rename : src/server/game/Globals/Formulas.h => src/server/game/Miscellaneous/Formulas.h rename : src/server/game/Globals/Language.h => src/server/game/Miscellaneous/Language.h rename : src/server/game/Globals/SharedDefines.h => src/server/game/Miscellaneous/SharedDefines.h rename : src/server/game/Movement/MovementGenerators/MovementGenerator.cpp => src/server/game/Movement/MovementGenerator.cpp rename : src/server/game/Movement/MovementGenerators/MovementGenerator.h => src/server/game/Movement/MovementGenerator.h rename : src/server/game/Movement/MovementGenerators/MovementGeneratorImpl.h => src/server/game/Movement/MovementGeneratorImpl.h rename : src/server/game/Movement/Path.h => src/server/game/Movement/Waypoints/Path.h rename : src/server/game/Movement/WaypointManager.cpp => src/server/game/Movement/Waypoints/WaypointManager.cpp rename : src/server/game/Movement/WaypointManager.h => src/server/game/Movement/Waypoints/WaypointManager.h rename : src/server/game/OutdoorPvP/OutdoorPvPEP.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPEP.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPEP.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPEP.h rename : src/server/game/OutdoorPvP/OutdoorPvPHP.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPHP.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPHP.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPHP.h rename : src/server/game/OutdoorPvP/OutdoorPvPNA.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPNA.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPNA.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPNA.h rename : src/server/game/OutdoorPvP/OutdoorPvPSI.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPSI.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPSI.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPSI.h rename : src/server/game/OutdoorPvP/OutdoorPvPTF.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPTF.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPTF.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPTF.h rename : src/server/game/OutdoorPvP/OutdoorPvPZM.cpp => src/server/game/OutdoorPvP/Zones/OutdoorPvPZM.cpp rename : src/server/game/OutdoorPvP/OutdoorPvPZM.h => src/server/game/OutdoorPvP/Zones/OutdoorPvPZM.h rename : src/server/game/PrecompiledHeaders/pchlinux.cpp => src/server/game/PrecompiledHeaders/NixCorePCH.cpp rename : src/server/game/PrecompiledHeaders/pchlinux.h => src/server/game/PrecompiledHeaders/NixCorePCH.h rename : src/server/game/ScriptMgr/ScriptedPch.cpp => src/server/game/PrecompiledHeaders/ScriptPCH.cpp rename : src/server/game/ScriptMgr/ScriptedPch.h => src/server/game/PrecompiledHeaders/ScriptPCH.h rename : src/server/game/PrecompiledHeaders/pchdef.cpp => src/server/game/PrecompiledHeaders/WinCorePCH.cpp rename : src/server/game/PrecompiledHeaders/pchdef.h => src/server/game/PrecompiledHeaders/WinCorePCH.h rename : src/server/game/ScriptMgr/ScriptLoader.cpp => src/server/game/Scripting/ScriptLoader.cpp rename : src/server/game/ScriptMgr/ScriptLoader.h => src/server/game/Scripting/ScriptLoader.h rename : src/server/game/ScriptMgr/ScriptMgr.cpp => src/server/game/Scripting/ScriptMgr.cpp rename : src/server/game/ScriptMgr/ScriptMgr.h => src/server/game/Scripting/ScriptMgr.h rename : src/server/game/ScriptMgr/ScriptSystem.cpp => src/server/game/Scripting/ScriptSystem.cpp rename : src/server/game/ScriptMgr/ScriptSystem.h => src/server/game/Scripting/ScriptSystem.h rename : src/server/game/Addons/AddonHandler.cpp => src/server/game/Server/Protocol/Handlers/AddonHandler.cpp rename : src/server/game/Addons/AddonHandler.h => src/server/game/Server/Protocol/Handlers/AddonHandler.h rename : src/server/game/BattleGrounds/ArenaTeamHandler.cpp => src/server/game/Server/Protocol/Handlers/ArenaTeamHandler.cpp rename : src/server/game/AuctionHouse/AuctionHouseHandler.cpp => src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp rename : src/server/game/BattleGrounds/BattleGroundHandler.cpp => src/server/game/Server/Protocol/Handlers/BattleGroundHandler.cpp rename : src/server/game/Calender/CalendarHandler.cpp => src/server/game/Server/Protocol/Handlers/CalendarHandler.cpp rename : src/server/game/Chat/ChannelHandler.cpp => src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp rename : src/server/game/Entities/Player/CharacterHandler.cpp => src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp rename : src/server/game/Chat/ChatHandler.cpp => src/server/game/Server/Protocol/Handlers/ChatHandler.cpp rename : src/server/game/Combat/CombatHandler.cpp => src/server/game/Server/Protocol/Handlers/CombatHandler.cpp rename : src/server/game/Entities/Player/DuelHandler.cpp => src/server/game/Server/Protocol/Handlers/DuelHandler.cpp rename : src/server/game/Groups/GroupHandler.cpp => src/server/game/Server/Protocol/Handlers/GroupHandler.cpp rename : src/server/game/Guilds/GuildHandler.cpp => src/server/game/Server/Protocol/Handlers/GuildHandler.cpp rename : src/server/game/Entities/Item/ItemHandler.cpp => src/server/game/Server/Protocol/Handlers/ItemHandler.cpp rename : src/server/game/LookingForGroup/LFGHandler.cpp => src/server/game/Server/Protocol/Handlers/LFGHandler.cpp rename : src/server/game/Loot/LootHandler.cpp => src/server/game/Server/Protocol/Handlers/LootHandler.cpp rename : src/server/game/Entities/Player/MiscHandler.cpp => src/server/game/Server/Protocol/Handlers/MiscHandler.cpp rename : src/server/game/Movement/MovementHandler.cpp => src/server/game/Server/Protocol/Handlers/MovementHandler.cpp rename : src/server/game/Entities/Creature/NPCHandler.cpp => src/server/game/Server/Protocol/Handlers/NPCHandler.cpp rename : src/server/game/Entities/Creature/NPCHandler.h => src/server/game/Server/Protocol/Handlers/NPCHandler.h rename : src/server/game/Entities/Pet/PetHandler.cpp => src/server/game/Server/Protocol/Handlers/PetHandler.cpp rename : src/server/game/Entities/Player/PetitionsHandler.cpp => src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp rename : src/server/game/Quests/QueryHandler.cpp => src/server/game/Server/Protocol/Handlers/QueryHandler.cpp rename : src/server/game/Quests/QuestHandler.cpp => src/server/game/Server/Protocol/Handlers/QuestHandler.cpp rename : src/server/game/Skills/SkillHandler.cpp => src/server/game/Server/Protocol/Handlers/SkillHandler.cpp rename : src/server/game/Spells/SpellHandler.cpp => src/server/game/Server/Protocol/Handlers/SpellHandler.cpp rename : src/server/game/Movement/TaxiHandler.cpp => src/server/game/Server/Protocol/Handlers/TaxiHandler.cpp rename : src/server/game/Entities/Player/TicketHandler.cpp => src/server/game/Server/Protocol/Handlers/TicketHandler.cpp rename : src/server/game/Entities/Player/TradeHandler.cpp => src/server/game/Server/Protocol/Handlers/TradeHandler.cpp rename : src/server/game/Entities/Player/VoiceChatHandler.cpp => src/server/game/Server/Protocol/Handlers/VoiceChatHandler.cpp rename : src/server/game/Opcodes/Opcodes.cpp => src/server/game/Server/Protocol/Opcodes.cpp rename : src/server/game/Opcodes/Opcodes.h => src/server/game/Server/Protocol/Opcodes.h rename : src/server/game/World/WorldLog.cpp => src/server/game/Server/Protocol/WorldLog.cpp rename : src/server/game/World/WorldLog.h => src/server/game/Server/Protocol/WorldLog.h rename : src/server/game/World/WorldSession.cpp => src/server/game/Server/WorldSession.cpp rename : src/server/game/World/WorldSession.h => src/server/game/Server/WorldSession.h rename : src/server/game/World/WorldSocket.cpp => src/server/game/Server/WorldSocket.cpp rename : src/server/game/World/WorldSocket.h => src/server/game/Server/WorldSocket.h rename : src/server/game/World/WorldSocketMgr.cpp => src/server/game/Server/WorldSocketMgr.cpp rename : src/server/game/World/WorldSocketMgr.h => src/server/game/Server/WorldSocketMgr.h rename : src/server/shared/Config/CMakeLists.txt => src/server/shared/Configuration/CMakeLists.txt rename : src/server/shared/Config/Config.cpp => src/server/shared/Configuration/Config.cpp rename : src/server/shared/Config/Config.h => src/server/shared/Configuration/Config.h rename : src/server/shared/Config/ConfigEnv.h => src/server/shared/Configuration/ConfigEnv.h rename : src/server/shared/Config/ConfigLibrary.vcproj => src/server/shared/Configuration/ConfigLibrary.vcproj rename : src/server/shared/Config/dotconfpp/dotconfpp.cpp => src/server/shared/Configuration/dotconfpp/dotconfpp.cpp rename : src/server/shared/Config/dotconfpp/dotconfpp.h => src/server/shared/Configuration/dotconfpp/dotconfpp.h rename : src/server/shared/Config/dotconfpp/mempool.cpp => src/server/shared/Configuration/dotconfpp/mempool.cpp rename : src/server/shared/Config/dotconfpp/mempool.h => src/server/shared/Configuration/dotconfpp/mempool.h rename : src/server/shared/Auth/SARC4.cpp => src/server/shared/Cryptography/ARC4.cpp rename : src/server/shared/Auth/SARC4.h => src/server/shared/Cryptography/ARC4.h rename : src/server/shared/Auth/AuthCrypt.cpp => src/server/shared/Cryptography/Authentication/AuthCrypt.cpp rename : src/server/shared/Auth/AuthCrypt.h => src/server/shared/Cryptography/Authentication/AuthCrypt.h rename : src/server/shared/Auth/BigNumber.cpp => src/server/shared/Cryptography/BigNumber.cpp rename : src/server/shared/Auth/BigNumber.h => src/server/shared/Cryptography/BigNumber.h rename : src/server/shared/Auth/CMakeLists.txt => src/server/shared/Cryptography/CMakeLists.txt rename : src/server/shared/Auth/Hmac.cpp => src/server/shared/Cryptography/HMACSHA1.cpp rename : src/server/shared/Auth/Hmac.h => src/server/shared/Cryptography/HMACSHA1.h rename : src/server/shared/Auth/md5.c => src/server/shared/Cryptography/MD5.c rename : src/server/shared/Auth/md5.h => src/server/shared/Cryptography/MD5.h rename : src/server/shared/Auth/Sha1.cpp => src/server/shared/Cryptography/SHA1.cpp rename : src/server/shared/Auth/Sha1.h => src/server/shared/Cryptography/SHA1.h rename : src/server/shared/Database/DBCFileLoader.cpp => src/server/shared/DataStores/DBCFileLoader.cpp rename : src/server/shared/Database/DBCFileLoader.h => src/server/shared/DataStores/DBCFileLoader.h rename : src/server/shared/Database/DBCStore.h => src/server/shared/DataStores/DBCStore.h rename : src/server/shared/Errors.h => src/server/shared/Debugging/Errors.h rename : src/server/shared/MemoryLeaks.cpp => src/server/shared/Debugging/MemoryLeaks.cpp rename : src/server/shared/MemoryLeaks.h => src/server/shared/Debugging/MemoryLeaks.h rename : src/server/shared/WheatyExceptionReport.cpp => src/server/shared/Debugging/WheatyExceptionReport.cpp rename : src/server/shared/WheatyExceptionReport.h => src/server/shared/Debugging/WheatyExceptionReport.h rename : src/server/shared/Log.cpp => src/server/shared/Logging/Log.cpp rename : src/server/shared/Log.h => src/server/shared/Logging/Log.h rename : src/server/shared/ByteBuffer.h => src/server/shared/Packets/ByteBuffer.h rename : src/server/shared/WorldPacket.h => src/server/shared/Packets/WorldPacket.h rename : src/server/shared/DelayExecutor.cpp => src/server/shared/Threading/DelayExecutor.cpp rename : src/server/shared/DelayExecutor.h => src/server/shared/Threading/DelayExecutor.h rename : src/server/shared/LockedQueue.h => src/server/shared/Threading/LockedQueue.h rename : src/server/shared/Threading.cpp => src/server/shared/Threading/Threading.cpp rename : src/server/shared/Threading.h => src/server/shared/Threading/Threading.h rename : src/server/shared/ProgressBar.cpp => src/server/shared/Utilities/ProgressBar.cpp rename : src/server/shared/ProgressBar.h => src/server/shared/Utilities/ProgressBar.h rename : src/server/shared/ServiceWin32.cpp => src/server/shared/Utilities/ServiceWin32.cpp rename : src/server/shared/ServiceWin32.h => src/server/shared/Utilities/ServiceWin32.h rename : src/server/shared/SignalHandler.h => src/server/shared/Utilities/SignalHandler.h rename : src/server/shared/Timer.h => src/server/shared/Utilities/Timer.h rename : src/server/shared/Util.cpp => src/server/shared/Utilities/Util.cpp rename : src/server/shared/Util.h => src/server/shared/Utilities/Util.h rename : src/server/worldserver/CliRunnable.cpp => src/server/worldserver/CommandLine/CliRunnable.cpp rename : src/server/worldserver/CliRunnable.h => src/server/worldserver/CommandLine/CliRunnable.h rename : src/server/worldserver/RASocket.cpp => src/server/worldserver/RemoteAccess/RASocket.cpp rename : src/server/worldserver/RASocket.h => src/server/worldserver/RemoteAccess/RASocket.h rename : src/server/worldserver/WorldRunnable.cpp => src/server/worldserver/WorldThread/WorldRunnable.cpp rename : src/server/worldserver/WorldRunnable.h => src/server/worldserver/WorldThread/WorldRunnable.h
Diffstat (limited to 'src/server/shared/Logging/Log.cpp')
-rw-r--r--src/server/shared/Logging/Log.cpp1005
1 files changed, 1005 insertions, 0 deletions
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
new file mode 100644
index 00000000000..187b9eaa79b
--- /dev/null
+++ b/src/server/shared/Logging/Log.cpp
@@ -0,0 +1,1005 @@
+/*
+ * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+ *
+ * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "Common.h"
+#include "Log.h"
+#include "Policies/SingletonImp.h"
+#include "Config/ConfigEnv.h"
+#include "Util.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+
+INSTANTIATE_SINGLETON_1( Log );
+
+Log::Log() :
+ raLogfile(NULL), logfile(NULL), gmLogfile(NULL), charLogfile(NULL),
+ dberLogfile(NULL), chatLogfile(NULL), m_gmlog_per_account(false),
+ m_enableLogDBLater(false), m_enableLogDB(false), m_colored(false),
+ arenaLogFile(NULL)
+{
+ Initialize();
+}
+
+Log::~Log()
+{
+ if( logfile != NULL )
+ fclose(logfile);
+ logfile = NULL;
+
+ if( gmLogfile != NULL )
+ fclose(gmLogfile);
+ gmLogfile = NULL;
+
+ if (charLogfile != NULL)
+ fclose(charLogfile);
+ charLogfile = NULL;
+
+ if( dberLogfile != NULL )
+ fclose(dberLogfile);
+ dberLogfile = NULL;
+
+ if (raLogfile != NULL)
+ fclose(raLogfile);
+ raLogfile = NULL;
+
+ if (chatLogfile != NULL)
+ fclose(chatLogfile);
+ chatLogfile = NULL;
+
+ if (arenaLogFile != NULL)
+ fclose(arenaLogFile);
+ arenaLogFile = NULL;
+}
+
+void Log::SetLogLevel(char *Level)
+{
+ int32 NewLevel =atoi((char*)Level);
+ if ( NewLevel <0 )
+ NewLevel = 0;
+ m_logLevel = NewLevel;
+
+ outString( "LogLevel is %u",m_logLevel );
+}
+
+void Log::SetLogFileLevel(char *Level)
+{
+ int32 NewLevel =atoi((char*)Level);
+ if ( NewLevel <0 )
+ NewLevel = 0;
+ m_logFileLevel = NewLevel;
+
+ outString( "LogFileLevel is %u",m_logFileLevel );
+}
+
+void Log::SetDBLogLevel(char *Level)
+{
+ int32 NewLevel = atoi((char*)Level);
+ if ( NewLevel < 0 )
+ NewLevel = 0;
+ m_dbLogLevel = NewLevel;
+
+ outString( "DBLogLevel is %u",m_dbLogLevel );
+}
+
+void Log::Initialize()
+{
+ /// Check whether we'll log GM commands/RA events/character outputs/chat stuffs
+ m_dbChar = sConfig.GetBoolDefault("LogDB.Char", false);
+ m_dbRA = sConfig.GetBoolDefault("LogDB.RA", false);
+ m_dbGM = sConfig.GetBoolDefault("LogDB.GM", false);
+ m_dbChat = sConfig.GetBoolDefault("LogDB.Chat", false);
+
+ /// Realm must be 0 by default
+ SetRealmID(0);
+
+ /// Common log files data
+ m_logsDir = sConfig.GetStringDefault("LogsDir","");
+ if (!m_logsDir.empty())
+ if ((m_logsDir.at(m_logsDir.length() - 1) != '/') && (m_logsDir.at(m_logsDir.length() - 1) != '\\'))
+ m_logsDir.append("/");
+
+ m_logsTimestamp = "_" + GetTimestampStr();
+
+ /// Open specific log files
+ logfile = openLogFile("LogFile","LogTimestamp","w");
+ InitColors(sConfig.GetStringDefault("LogColors", ""));
+
+ m_gmlog_per_account = sConfig.GetBoolDefault("GmLogPerAccount",false);
+ if(!m_gmlog_per_account)
+ gmLogfile = openLogFile("GMLogFile","GmLogTimestamp","a");
+ else
+ {
+ // GM log settings for per account case
+ m_gmlog_filename_format = sConfig.GetStringDefault("GMLogFile", "");
+ if(!m_gmlog_filename_format.empty())
+ {
+ bool m_gmlog_timestamp = sConfig.GetBoolDefault("GmLogTimestamp",false);
+
+ size_t dot_pos = m_gmlog_filename_format.find_last_of(".");
+ if(dot_pos!=m_gmlog_filename_format.npos)
+ {
+ if(m_gmlog_timestamp)
+ m_gmlog_filename_format.insert(dot_pos,m_logsTimestamp);
+
+ m_gmlog_filename_format.insert(dot_pos,"_#%u");
+ }
+ else
+ {
+ m_gmlog_filename_format += "_#%u";
+
+ if(m_gmlog_timestamp)
+ m_gmlog_filename_format += m_logsTimestamp;
+ }
+
+ m_gmlog_filename_format = m_logsDir + m_gmlog_filename_format;
+ }
+ }
+
+ charLogfile = openLogFile("CharLogFile","CharLogTimestamp","a");
+
+ dberLogfile = openLogFile("DBErrorLogFile",NULL,"a");
+ raLogfile = openLogFile("RaLogFile",NULL,"a");
+ chatLogfile = openLogFile("ChatLogFile","ChatLogTimestamp","a");
+ arenaLogFile = openLogFile("ArenaLogFile",NULL,"a");
+
+ // Main log file settings
+ m_logLevel = sConfig.GetIntDefault("LogLevel", LOGL_NORMAL);
+ m_logFileLevel = sConfig.GetIntDefault("LogFileLevel", LOGL_NORMAL);
+ m_dbLogLevel = sConfig.GetIntDefault("DBLogLevel", LOGL_NORMAL);
+
+ m_logFilter = 0;
+
+ if(sConfig.GetBoolDefault("LogFilter_TransportMoves", true))
+ m_logFilter |= LOG_FILTER_TRANSPORT_MOVES;
+ if(sConfig.GetBoolDefault("LogFilter_CreatureMoves", true))
+ m_logFilter |= LOG_FILTER_CREATURE_MOVES;
+ if(sConfig.GetBoolDefault("LogFilter_VisibilityChanges", true))
+ m_logFilter |= LOG_FILTER_VISIBILITY_CHANGES;
+ if(sConfig.GetBoolDefault("LogFilter_AchievementUpdates", true))
+ m_logFilter |= LOG_FILTER_ACHIEVEMENT_UPDATES;
+
+ // Char log settings
+ m_charLog_Dump = sConfig.GetBoolDefault("CharLogDump", false);
+ m_charLog_Dump_Separate = sConfig.GetBoolDefault("CharLogDump.Separate", false);
+ if (m_charLog_Dump_Separate)
+ {
+ m_dumpsDir = sConfig.GetStringDefault("CharLogDump.SeparateDir", "");
+ if (!m_dumpsDir.empty())
+ if ((m_dumpsDir.at(m_dumpsDir.length() - 1) != '/') && (m_dumpsDir.at(m_dumpsDir.length() - 1) != '\\'))
+ m_dumpsDir.append("/");
+ }
+}
+
+FILE* Log::openLogFile(char const* configFileName,char const* configTimeStampFlag, char const* mode)
+{
+ std::string logfn=sConfig.GetStringDefault(configFileName, "");
+ if(logfn.empty())
+ return NULL;
+
+ if(configTimeStampFlag && sConfig.GetBoolDefault(configTimeStampFlag,false))
+ {
+ size_t dot_pos = logfn.find_last_of(".");
+ if(dot_pos!=logfn.npos)
+ logfn.insert(dot_pos,m_logsTimestamp);
+ else
+ logfn += m_logsTimestamp;
+ }
+
+ return fopen((m_logsDir+logfn).c_str(), mode);
+}
+
+FILE* Log::openGmlogPerAccount(uint32 account)
+{
+ if(m_gmlog_filename_format.empty())
+ return NULL;
+
+ char namebuf[TRINITY_PATH_MAX];
+ snprintf(namebuf,TRINITY_PATH_MAX,m_gmlog_filename_format.c_str(),account);
+ return fopen(namebuf, "a");
+}
+
+void Log::outTimestamp(FILE* file)
+{
+ time_t t = time(NULL);
+ tm* aTm = localtime(&t);
+ // YYYY year
+ // MM month (2 digits 01-12)
+ // DD day (2 digits 01-31)
+ // HH hour (2 digits 00-23)
+ // MM minutes (2 digits 00-59)
+ // SS seconds (2 digits 00-59)
+ fprintf(file,"%-4d-%02d-%02d %02d:%02d:%02d ",aTm->tm_year+1900,aTm->tm_mon+1,aTm->tm_mday,aTm->tm_hour,aTm->tm_min,aTm->tm_sec);
+}
+
+void Log::InitColors(const std::string& str)
+{
+ if(str.empty())
+ {
+ m_colored = false;
+ return;
+ }
+
+ int color[4];
+
+ std::istringstream ss(str);
+
+ for (uint8 i = 0; i < LogLevels; ++i)
+ {
+ ss >> color[i];
+
+ if(!ss)
+ return;
+
+ if(color[i] < 0 || color[i] >= Colors)
+ return;
+ }
+
+ for (uint8 i = 0; i < LogLevels; ++i)
+ m_colors[i] = ColorTypes(color[i]);
+
+ m_colored = true;
+}
+
+void Log::SetColor(bool stdout_stream, ColorTypes color)
+{
+ #if PLATFORM == PLATFORM_WINDOWS
+ static WORD WinColorFG[Colors] =
+ {
+ 0, // BLACK
+ FOREGROUND_RED, // RED
+ FOREGROUND_GREEN, // GREEN
+ FOREGROUND_RED | FOREGROUND_GREEN, // BROWN
+ FOREGROUND_BLUE, // BLUE
+ FOREGROUND_RED | FOREGROUND_BLUE,// MAGENTA
+ FOREGROUND_GREEN | FOREGROUND_BLUE, // CYAN
+ FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,// WHITE
+ // YELLOW
+ FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY,
+ // RED_BOLD
+ FOREGROUND_RED | FOREGROUND_INTENSITY,
+ // GREEN_BOLD
+ FOREGROUND_GREEN | FOREGROUND_INTENSITY,
+ FOREGROUND_BLUE | FOREGROUND_INTENSITY, // BLUE_BOLD
+ // MAGENTA_BOLD
+ FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
+ // CYAN_BOLD
+ FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
+ // WHITE_BOLD
+ FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY
+ };
+
+ HANDLE hConsole = GetStdHandle(stdout_stream ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE );
+ SetConsoleTextAttribute(hConsole, WinColorFG[color]);
+ #else
+ enum ANSITextAttr
+ {
+ TA_NORMAL=0,
+ TA_BOLD=1,
+ TA_BLINK=5,
+ TA_REVERSE=7
+ };
+
+ enum ANSIFgTextAttr
+ {
+ FG_BLACK=30, FG_RED, FG_GREEN, FG_BROWN, FG_BLUE,
+ FG_MAGENTA, FG_CYAN, FG_WHITE, FG_YELLOW
+ };
+
+ enum ANSIBgTextAttr
+ {
+ BG_BLACK=40, BG_RED, BG_GREEN, BG_BROWN, BG_BLUE,
+ BG_MAGENTA, BG_CYAN, BG_WHITE
+ };
+
+ static uint8 UnixColorFG[Colors] =
+ {
+ FG_BLACK, // BLACK
+ FG_RED, // RED
+ FG_GREEN, // GREEN
+ FG_BROWN, // BROWN
+ FG_BLUE, // BLUE
+ FG_MAGENTA, // MAGENTA
+ FG_CYAN, // CYAN
+ FG_WHITE, // WHITE
+ FG_YELLOW, // YELLOW
+ FG_RED, // LRED
+ FG_GREEN, // LGREEN
+ FG_BLUE, // LBLUE
+ FG_MAGENTA, // LMAGENTA
+ FG_CYAN, // LCYAN
+ FG_WHITE // LWHITE
+ };
+
+ fprintf((stdout_stream? stdout : stderr), "\x1b[%d%sm", UnixColorFG[color], (color >= YELLOW && color < Colors ? ";1" : ""));
+ #endif
+}
+
+void Log::ResetColor(bool stdout_stream)
+{
+ #if PLATFORM == PLATFORM_WINDOWS
+ HANDLE hConsole = GetStdHandle(stdout_stream ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE );
+ SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED );
+ #else
+ fprintf(( stdout_stream ? stdout : stderr ), "\x1b[0m");
+ #endif
+}
+
+std::string Log::GetTimestampStr()
+{
+ time_t t = time(NULL);
+ tm* aTm = localtime(&t);
+ // YYYY year
+ // MM month (2 digits 01-12)
+ // DD day (2 digits 01-31)
+ // HH hour (2 digits 00-23)
+ // MM minutes (2 digits 00-59)
+ // SS seconds (2 digits 00-59)
+ char buf[20];
+ snprintf(buf,20,"%04d-%02d-%02d_%02d-%02d-%02d",aTm->tm_year+1900,aTm->tm_mon+1,aTm->tm_mday,aTm->tm_hour,aTm->tm_min,aTm->tm_sec);
+ return std::string(buf);
+}
+
+void Log::outDB(LogTypes type, const char * str)
+{
+ if (!str || type >= MAX_LOG_TYPES)
+ return;
+
+ std::string new_str(str);
+ if (new_str.empty())
+ return;
+ LoginDatabase.escape_string(new_str);
+
+ LoginDatabase.PExecute("INSERT INTO logs (time, realm, type, string) "
+ "VALUES (" UI64FMTD ", %u, %u, '%s');", uint64(time(0)), realm, type, new_str.c_str());
+}
+
+void Log::outString(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_enableLogDB)
+ {
+ // we don't want empty strings in the DB
+ std::string s(str);
+ if (s.empty() || s == " ")
+ return;
+
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_STRING, nnew_str);
+ va_end(ap2);
+ }
+
+ if (m_colored)
+ SetColor(true,m_colors[LOGL_NORMAL]);
+
+ va_list ap;
+
+ va_start(ap, str);
+ vutf8printf(stdout, str, &ap);
+ va_end(ap);
+
+ if (m_colored)
+ ResetColor(true);
+
+ printf("\n");
+ if(logfile)
+ {
+ outTimestamp(logfile);
+ va_start(ap, str);
+ vfprintf(logfile, str, ap);
+ fprintf(logfile, "\n");
+ va_end(ap);
+
+ fflush(logfile);
+ }
+ fflush(stdout);
+}
+
+void Log::outString()
+{
+ printf("\n");
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ fprintf(logfile, "\n");
+ fflush(logfile);
+ }
+ fflush(stdout);
+}
+
+void Log::outCrash(const char * err, ...)
+{
+ if (!err)
+ return;
+
+ if (m_enableLogDB)
+ {
+ va_list ap2;
+ va_start(ap2, err);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, err, ap2);
+ outDB(LOG_TYPE_CRASH, nnew_str);
+ va_end(ap2);
+ }
+
+ if (m_colored)
+ SetColor(false,LRED);
+
+ va_list ap;
+
+ va_start(ap, err);
+ vutf8printf(stdout, err, &ap);
+ va_end(ap);
+
+ if (m_colored)
+ ResetColor(false);
+
+ fprintf(stderr, "\n");
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ fprintf(logfile, "CRASH ALERT: ");
+
+ va_start(ap, err);
+ vfprintf(logfile, err, ap);
+ va_end(ap);
+
+ fprintf(logfile, "\n");
+ fflush(logfile);
+ }
+ fflush(stderr);
+}
+
+void Log::outError(const char * err, ...)
+{
+ if (!err)
+ return;
+
+ if (m_enableLogDB)
+ {
+ va_list ap2;
+ va_start(ap2, err);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, err, ap2);
+ outDB(LOG_TYPE_ERROR, nnew_str);
+ va_end(ap2);
+ }
+
+ if (m_colored)
+ SetColor(false,LRED);
+
+ va_list ap;
+
+ va_start(ap, err);
+ vutf8printf(stderr, err, &ap);
+ va_end(ap);
+
+ if (m_colored)
+ ResetColor(false);
+
+ fprintf( stderr, "\n");
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ fprintf(logfile, "ERROR: ");
+
+ va_start(ap, err);
+ vfprintf(logfile, err, ap);
+ va_end(ap);
+
+ fprintf(logfile, "\n");
+ fflush(logfile);
+ }
+ fflush(stderr);
+}
+
+void Log::outArena(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (arenaLogFile)
+ {
+ va_list ap;
+ outTimestamp(arenaLogFile);
+ va_start(ap, str);
+ vfprintf(arenaLogFile, str, ap);
+ fprintf(arenaLogFile, "\n");
+ va_end(ap);
+ fflush(arenaLogFile);
+ }
+ fflush(stdout);
+}
+
+void Log::outErrorDb(const char * err, ...)
+{
+ if (!err)
+ return;
+
+ if (m_colored)
+ SetColor(false,LRED);
+
+ va_list ap;
+
+ va_start(ap, err);
+ vutf8printf(stderr, err, &ap);
+ va_end(ap);
+
+ if (m_colored)
+ ResetColor(false);
+
+ fprintf( stderr, "\n" );
+
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ fprintf(logfile, "ERROR: " );
+
+ va_start(ap, err);
+ vfprintf(logfile, err, ap);
+ va_end(ap);
+
+ fprintf(logfile, "\n" );
+ fflush(logfile);
+ }
+
+ if (dberLogfile)
+ {
+ outTimestamp(dberLogfile);
+ va_start(ap, err);
+ vfprintf(dberLogfile, err, ap);
+ va_end(ap);
+
+ fprintf(dberLogfile, "\n" );
+ fflush(dberLogfile);
+ }
+ fflush(stderr);
+}
+
+void Log::outBasic(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_enableLogDB && m_dbLogLevel > LOGL_NORMAL)
+ {
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_BASIC, nnew_str);
+ va_end(ap2);
+ }
+
+ if (m_logLevel > LOGL_NORMAL)
+ {
+ if (m_colored)
+ SetColor(true,m_colors[LOGL_BASIC]);
+
+ va_list ap;
+ va_start(ap, str);
+ vutf8printf(stdout, str, &ap);
+ va_end(ap);
+
+ if (m_colored)
+ ResetColor(true);
+
+ printf("\n");
+
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(logfile, str, ap);
+ fprintf(logfile, "\n" );
+ va_end(ap);
+ fflush(logfile);
+ }
+ }
+ fflush(stdout);
+}
+
+void Log::outDetail(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_enableLogDB && m_dbLogLevel > LOGL_BASIC)
+ {
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_DETAIL, nnew_str);
+ va_end(ap2);
+ }
+
+ if (m_logLevel > LOGL_BASIC)
+ {
+ if (m_colored)
+ SetColor(true,m_colors[LOGL_DETAIL]);
+
+ va_list ap;
+ va_start(ap, str);
+ vutf8printf(stdout, str, &ap);
+ va_end(ap);
+
+ if (m_colored)
+ ResetColor(true);
+
+ printf("\n");
+
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(logfile, str, ap);
+ va_end(ap);
+
+ fprintf(logfile, "\n");
+ fflush(logfile);
+ }
+ }
+
+ fflush(stdout);
+}
+
+void Log::outDebugInLine(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_logLevel > LOGL_DETAIL)
+ {
+ va_list ap;
+ va_start(ap, str);
+ vutf8printf(stdout, str, &ap);
+ va_end(ap);
+
+ //if(m_colored)
+ // ResetColor(true);
+
+ if (logfile)
+ {
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(logfile, str, ap);
+ va_end(ap);
+ }
+ }
+}
+
+void Log::outDebug(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_enableLogDB && m_dbLogLevel > LOGL_DETAIL)
+ {
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_DEBUG, nnew_str);
+ va_end(ap2);
+ }
+
+ if( m_logLevel > LOGL_DETAIL )
+ {
+ if (m_colored)
+ SetColor(true,m_colors[LOGL_DEBUG]);
+
+ va_list ap;
+ va_start(ap, str);
+ vutf8printf(stdout, str, &ap);
+ va_end(ap);
+
+ if(m_colored)
+ ResetColor(true);
+
+ printf( "\n" );
+
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(logfile, str, ap);
+ va_end(ap);
+
+ fprintf(logfile, "\n" );
+ fflush(logfile);
+ }
+ }
+ fflush(stdout);
+}
+
+void Log::outStringInLine(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ va_list ap;
+
+ va_start(ap, str);
+ vutf8printf(stdout, str, &ap);
+ va_end(ap);
+
+ if (logfile)
+ {
+ va_start(ap, str);
+ vfprintf(logfile, str, ap);
+ va_end(ap);
+ }
+}
+
+void Log::outCommand(uint32 account, const char * str, ...)
+{
+ if (!str)
+ return;
+
+ // TODO: support accountid
+ if (m_enableLogDB && m_dbGM)
+ {
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_GM, nnew_str);
+ va_end(ap2);
+ }
+
+ if (m_logLevel > LOGL_NORMAL)
+ {
+ if (m_colored)
+ SetColor(true,m_colors[LOGL_BASIC]);
+
+ va_list ap;
+ va_start(ap, str);
+ vutf8printf(stdout, str, &ap);
+ va_end(ap);
+
+ if (m_colored)
+ ResetColor(true);
+
+ printf("\n");
+
+ if (logfile)
+ {
+ outTimestamp(logfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(logfile, str, ap);
+ fprintf(logfile, "\n" );
+ va_end(ap);
+ fflush(logfile);
+ }
+ }
+
+ if (m_gmlog_per_account)
+ {
+ if (FILE* per_file = openGmlogPerAccount (account))
+ {
+ outTimestamp(per_file);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(per_file, str, ap);
+ fprintf(per_file, "\n" );
+ va_end(ap);
+ fclose(per_file);
+ }
+ }
+ else if (gmLogfile)
+ {
+ outTimestamp(gmLogfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(gmLogfile, str, ap);
+ fprintf(gmLogfile, "\n" );
+ va_end(ap);
+ fflush(gmLogfile);
+ }
+
+ fflush(stdout);
+}
+
+void Log::outChar(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_enableLogDB && m_dbChar)
+ {
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_CHAR, nnew_str);
+ va_end(ap2);
+ }
+
+ if (charLogfile)
+ {
+ outTimestamp(charLogfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(charLogfile, str, ap);
+ fprintf(charLogfile, "\n" );
+ va_end(ap);
+ fflush(charLogfile);
+ }
+}
+
+void Log::outCharDump(const char * str, uint32 account_id, uint32 guid, const char * name)
+{
+ FILE *file = NULL;
+ if (m_charLog_Dump_Separate)
+ {
+ char fileName[29]; // Max length: name(12) + guid(11) + _.log (5) + \0
+ snprintf(fileName, 29, "%d_%s.log", guid, name);
+ std::string sFileName(m_dumpsDir);
+ sFileName.append(fileName);
+ file = fopen((m_logsDir + sFileName).c_str(), "w");
+ }
+ else
+ file = charLogfile;
+ if (file)
+ {
+ fprintf(file, "== START DUMP == (account: %u guid: %u name: %s )\n%s\n== END DUMP ==\n",
+ account_id, guid, name, str);
+ fflush(file);
+ if (m_charLog_Dump_Separate)
+ fclose(file);
+ }
+}
+
+void Log::outRemote(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_enableLogDB && m_dbRA)
+ {
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_RA, nnew_str);
+ va_end(ap2);
+ }
+
+ if (raLogfile)
+ {
+ outTimestamp(raLogfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(raLogfile, str, ap);
+ fprintf(raLogfile, "\n" );
+ va_end(ap);
+ fflush(raLogfile);
+ }
+ fflush(stdout);
+}
+
+void Log::outChat(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (m_enableLogDB && m_dbChat)
+ {
+ va_list ap2;
+ va_start(ap2, str);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
+ outDB(LOG_TYPE_CHAT, nnew_str);
+ va_end(ap2);
+ }
+
+ if (chatLogfile)
+ {
+ outTimestamp(chatLogfile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(chatLogfile, str, ap);
+ fprintf(chatLogfile, "\n" );
+ fflush(chatLogfile);
+ va_end(ap);
+ }
+ fflush(stdout);
+}
+
+void outstring_log(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ char buf[256];
+ va_list ap;
+ va_start(ap, str);
+ vsnprintf(buf,256, str, ap);
+ va_end(ap);
+
+ Trinity::Singleton<Log>::Instance().outString(buf);
+}
+
+void detail_log(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ char buf[256];
+ va_list ap;
+ va_start(ap, str);
+ vsnprintf(buf,256, str, ap);
+ va_end(ap);
+
+ Trinity::Singleton<Log>::Instance().outDetail(buf);
+}
+
+void debug_log(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ char buf[256];
+ va_list ap;
+ va_start(ap, str);
+ vsnprintf(buf,256, str, ap);
+ va_end(ap);
+
+ Trinity::Singleton<Log>::Instance().outDebug(buf);
+}
+
+void error_log(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ char buf[256];
+ va_list ap;
+ va_start(ap, str);
+ vsnprintf(buf,256, str, ap);
+ va_end(ap);
+
+ Trinity::Singleton<Log>::Instance().outError(buf);
+}
+
+void error_db_log(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ char buf[256];
+ va_list ap;
+ va_start(ap, str);
+ vsnprintf(buf,256, str, ap);
+ va_end(ap);
+
+ Trinity::Singleton<Log>::Instance().outErrorDb(buf);
+}
+