Hi again everyone!

Well, I’ve finally found a method that uses the little-known, but ultra-useful built-in logging of Hearthstone.

Here’s how to enable it:

  • Navigate to your Local Application Data directory:
    • WindowsC:UsersYOURUSERAppDataLocalBlizzardHearthstone or just%LOCALAPPDATA%/Blizzard/Hearthstone
    • Mac (I believe): ~/Library/Application Support/Blizzard/Hearthstone
  • Create a file called “log.config”
  • Put the following text into it:
  • You’re DONE!

Now you’re all set forever. Relaunch Hearthstone if you had it open. The log file, called output_log.txt, containing all your data will be found in the Hearthstone installation directory:

  • WindowsC:Program Files (x86)HearthstoneHearthstone_Dataoutput_log.txt (or just Program Files for 32 bit people)
  • Mac (I think): /Applications/Hearthstone/Hearthstone.app/Contents/Data/output_log.txt

When you open up that file, you’ll see a bunch of information. Here’s an example of the relevant lines when I played a Paladin InnKeeper:
[Zone] ZoneChangeList.ProcessChanges() - id=1 local=False [name=Garrosh Hellscream id=4 zone=PLAY zonePos=0 cardId=HERO_01 player=1] zone from -> FRIENDLY PLAY (Hero)
[Zone] ZoneChangeList.ProcessChanges() - id=1 local=False [name=Uther Lightbringer id=36 zone=PLAY zonePos=0 cardId=HERO_04 player=2] zone from -> OPPOSING PLAY (Hero)
[Zone] ZoneChangeList.ProcessChanges() - id=7 local=False [name=The Coin id=68 zone=GRAVEYARD zonePos=0 cardId=GAME_005 player=1] zone from -> FRIENDLY GRAVEYARD
[Zone] ZoneChangeList.Finish() - id=2 changes=4 complete=True local=True localTrigger=[powerTask=[] entity=[name=Armorsmith id=33 zone=HAND zonePos=2 cardId=EX1_402 player=1] srcZoneTag=HAND srcPos=2 dstZoneTag=PLAY dstPos=1]

So you can see there that I coined out Armorsmith. This information will continue to update in that file as things are played, so you can just keep the file open and refresh it, or if you want, this can be parsed with a dead-simple program.

Now you have your entire card history stored until you exit the game.

For the more inclined:

If you like the terminal, you can do stuff like this:
$ grep '^[Zone.*[name=.*zone=(PLAY|HAND).* HAND ' output_log.txt | cut -d' ' -f5- | cut -d'=' -f2- | uniq | sed -e 's/^True/ME: /;s/^False/THEM: /;s/[name=(.*) id=[0-9]*.*/1/'
ME: The Coin
ME: Armorsmith
THEM: Voidwalker

There are also many, many more loggers, but you only really need Zone. If you want to track everything, including attacks, card backs, etc., you can simply copy and paste the above lines in the log.config file, replacing “ZONE” with one of these:

Asset, BattleNet, Ben, Bob, Brian, Cameron, Derek, FaceDownCard, HealthyGaming, Jay, Kyle, LoadingFile, Mike, Net, Packets, Packet, Power, Rachelle, Sound

“Kyle” shows card back information, “Bob” shows your legend rank if you have one, “Asset” shows all the loaded unity assets, etc. “Power” contains hero power, attacks, and the like.

ENJOY! As far as I know this information does not exist anywhere else.


Leave a Reply