Editor’s note: give it up for Zeherah, who is back to write up part two in the Learning from Logs segment! Part one is here.
So you’ve already learned the basics of how to make a combat log and post it on World of Logs, and you know how to navigate the site (and if you missed part 1, you can read it first). But you want to find out more about yourself and the raid. There are some advanced features on World of Logs that can help you do that:
Expression Editor:
The Expression Editor is similar to the log browser but more powerful. You need to learn the syntax in order to use it but it’s not too complicated (it uses boolean logic).
Here’s an example string you can try in the expression editor:
sourcename="MyName" and (type=TYPE_CAST or (type=TYPE_AURA and (spell="Exploit Weakness" or spell="MyTrinketBuff")))
Modify this to put your character name in the place of MyName, and the name of your trinket buff in the place of MyTrinketBuff. You can add additional procs to watch for if you like. This query will list all spell casts as well as auras (buffs) matching the specified spell names cast by the specified player.
Click Run, then you’ll see a list of everything that matches your search under Results. You can click on the Timeline tab and use the Plot spells timeline to see what the actual breakdown of abilities used looked like over the course of the fight.Analyze:
The Analyze section can be useful for tracking your contribution to specific portions of a fight such as adds. For example you can select Damage Done under Analyze, then select by source (which should be the default) and select the name of the target you’re looking for from the target dropdown menu. For example on Deathbringer Saurfang you might want to see how everyone’s damage was on blood beasts. This can help you tell if the dps assigned to them (usually the ranged) is pulling their weight and killing them instead of just focusing on the boss and how well you’re doing on them compared to the others assigned.
The analyze section also supports the same syntax as the expression editor to filter results. So you can add an expression to further filter what you see. For example you can look at Damage Taken to see if you’re placing an undue burden on the raid by being slow to get out of negative effects, such as Death and Decay on Deathwhisper. Select Damage Taken by target, leave the source set to any, then put spell=”Death and Decay” in the Expression box and click Go. Now you’ll see the damage each player took over the course of the fight only from Death and Decay. You can also enable and disable certain players on the timeline chart by modifying which player boxes are checked so you can compare in more detail.
Comparing predicted to actual damage:
The Hunter DPS Analyzer can only roughly estimate the kind of damage you’re likely to do in a fight but can’t realistically reflect most types of real fights since they vary so widely. But when you’re trying to get an idea of where you might be weak damage-wise, you can select a fairly straightforward fight (like Festergut) and try to compare your predicted damage directly to your log. This can help you get an idea of where you might be having problems.
- Configure the dps analyzer with your exact gear, spec, glyphs, pet, etc.
- Make sure to review your raid makeup from the log and apply the exact buffs and debuffs that were available to you. In some cases you may have to make some educated guesses. For example usually enhancement shamans will provide improved strength of earth totem, if you don’t have one chances are you only had regular strength of earth or the DK equivalent. In some cases you may want to check the listed debuffs on the boss to see if important ones were actually being applied (sunder/expose for example is often forgotten when there is no protection warrior).
- If you are looking at an ICC fight, be sure to apply the specific strength of the zonewide buff under Custom Buffs (you can fill it in under both magic and physical damage and be sure to specify that your pet got it too if it isn’t too old a log).
- Go under settings and adjust your Latency to a reasonable estimate of what you think it was on the fight. Look at the fight length in your log and fill in reasonable estimates for the Fight Length and Fight Time Spent in Kill Shot Range. The easiest way to find the kill shot range is probably to check the Log Browser for your kill shots then do the math to figure out the fraction of how long (in minutes) you were in range of kill shot. For example if the fight length was 3:43 and your first kill shot was 38 seconds before the end of the fight, reasonable numbers to fill in would be a 3.7 min fight length and .6 min in kill shot range.
- Review the Wait Time settings under Shot Priority and be sure they reflect your preferred delay time and shots. Also make sure to adjust sniper training uptime to match what’s listed under the log if you’re SV.
- Update DPS. Now copy down just the hunter dps and pay attention to that figure. Unless your pet dps is way off from what’s expected, chances are any problems dpswise are on the hunter side and not the pet, so let’s just look at the hunter dps.
- Look under the debuffs and buffs you gained to see if there are any things that happened during the fight you want to account for. For example if you had a vile gas uptime of 5.3%, you want to reduce your estimated dps by that amount before comparing. If you had to viper you obviously will want to calculate that in as well (assuming the site didn’t already have a viper penalty for you). Also be sure to apply any special buffs someone might have applied to you like tricks of the trade.
- Check for any misses that are above the expected miss rate. Usually this is caused by getting out of range of a Draenei hit buff if you’re relying on one. Add up the average value of each shot missed above the expected amount and divide by the number of seconds to figure out how much dps you lost to this so you can get a new estimated dps.
- To estimate how many autoshots you were expected to fire, take your Average Autoshot Speed (under Effective Haste) and divide the fight length by it. Then reduce this amount by any time on the fight you were incapacitated. This should give you a good idea of if you’re losing autoshots for some reason. Note that the numbers may not match up exactly since there are haste procs and other factors involved, but if the numbers are significantly off that may indicate a problem.
- Compare the number of shots fired to the expected amount displayed in the Shot Priority section of your estimated dps output. Be sure to apply the expected reduction in shots based on the time you were incapacitated on the fight. For example if you were expected to fire 81 steady shots and you had a vile gas uptime of 5.3%, then you actually should only expect 76 steady shots, some of which may have been replaced by arcane shots due to movement. Also be sure to subtract an expected steady shot if you manually refreshed serpent sting for a %dmg buff (which most MM users will do on a straightforward fight).
- Check under your buffs to get an idea of if you used your cooldowns (such as rapid fire) as many times as expected.
This should give you a fairly good idea of where the gaps in dps estimated versus dps real dps are coming from and whether you’re using your shots as efficiently as you could be.

I’d say this thread is far better for learning syntax:
http://forums.worldoflogs.com/viewtopic.php?f=6&t=1336
Thanks for the link, I’ve updated it. The original link is the one they point you to on the expression editor page but the one you posted is definitely more helpful.
Thanks for the detailed post Zeherah, the part on “Comparing predicted to actual damage” is especially great. *thumbsup*
[...] Festergut (25) normal encounter. For more information on using World of Logs you can check out this post at [...]
Does anybody has already done an Expression Editor to display how many potion is each by each player ?
Let say:
- Player1: Haste (4) Heal(2)
- Player2: Haste (3) Mana(5)
- …
There is so many kind of potion it seems complicated but really usefull.
I’m not sure about one to display the #, but I did come up with a string to check for general potion use:
(spell = ‘Speed’ OR spell = ‘Wild Magic’ OR spell=’Insane Strength’ OR spell=’Indestructible’ OR spell = ‘Runic Healing Injector’ OR spell = ‘Runic Mana Injector’ OR spell = ‘Runic Mana Potion’ OR spell = ‘Runic Healing Potion’ OR spell = “Crazy Alchemist’s Potion”) AND type=TYPE_CAST
Not sure if I got all the pot names correct, but this should be roughly useful.
Great thanks ! I translate it to French it works well.
Is there a way to have a kind of count per player ?
[...] Part 2 [...]
[...] discovered this when I was using Zeherah’s expression editor-fu to compare the “tightness” of my rotation to a friend of mine. Here’s his from an [...]
[...] Zeherah’s Learning from Logs, parts 1 and 2. [...]
[...] This post assumes a basic understanding of World of Logs. If you are not already familiar with it, please see Zeherah’s guides to it: part one, part two. [...]
[...] Editor in WoL. If you are unfamiliar with WoL, please check out Zeherah’s guides, parts 1 and 2. The Expression Editor allows you to enter commands that tell WoL which types of lines from the [...]