The single most detailed and customizable way to inspect a WoL report is using the Expression Editor (a.k.a. XE). The XE, like the Log Browser that was deprecated in favor of it, allows you to inspect every single event in the log. What's more, you can input a filter expression to show only events of interest. The language this expression is written in is based on SQL, which makes it very extensible and rather easy to read and create.

This topic will describe this expression (or query) language in its current state. Included are a full formal grammar and a list of identifiers and constants along with their descriptions. Significant changes made to the QL will also be posted and detailed here.

Auracen wrote up an awesome guide to the XE at PlusHeal.com and has graciously allowed me to repost it here for your perusal. The original may be found at the PlusHeal.com forums as this version may lag behind a little on updates.

/bow Auracen.

World of Logs - Expression Editor

I discovered a fun little tool in World of logs recently, the Expression Editor. It can go beyond what you normally can see from World of Logs standard dps/hps reports. It is very powerful, but has taken me a bit to start understanding the syntax and building useful queries. I thought I'd write up some documentation on how to use it since I haven't found much yet.

This guide is a work in progress, and constructive feedback is always welcomed. If there is anything I have missed or any pieces that are hard to understand, feel free to ask questions and I can add to or explain complicated pieces.

Getting Started

Go to the fight or raid you want to analyze, and then under the drop down menu where you would normally choose Damage Done, or Healing done, etc, choose Expression Editor. If you choose one specific fight, your query will likely return faster since it has less of the combat log to look through than just choosing the entire raid. This will also eliminate any unwanted data such as when you are just clearing trash mobs.

Once at the Expression Editor screen, you will be given a query text box. You will enter an expression in the query you want, and hit run. World of Logs will return any line of the combat log that qualifies on your query.

I'll start with an example... I play a restoration druid and let's say I want to know how often I cast rejuvenation on a target that is already effected by rejuvenation (This can be thought of as refreshing a DoT before the last tick... a loss of HPS/DPS). This is actually pretty easy to do with the expression editor, but would be virtually impossible to find out through looking elsewhere on worldoflogs. So, to implement this example I would enter the following into the expression editor:

What this is telling the editor is give me any event where the source of the spell/ability is Auracen, the type of action is SPELL_AURA_REFRESH, and the spell cast is Rejuvenation. Running this gives me a little report, like this:

The and/or logic can be kind of confusing if you haven't done much programming... I And everything together, so that all of those qualities are required. If you want one condition or another, you use the word or. So lets say I want to see refreshes on Rejuvenation Or Regrowth. I still only want to see spells cast by "Auracen" and I still want to only see spells cast with a fullType of SPELL_AURA_REFRESH so when dealing with those clauses I need to use the and operator. However no line will qualify if I say I want lines where the spell is Rejuvenation and Regrowth, so I need to use the or qualifier there. It will look something like this:

Notice that I have to use the ( )'s around Rejuvenation or Regrowth so that the query knows the order of operations. Without the parenthesis it would return (All spells cast by Auracen, that refreshed an aura, and was rejuvenation) or any spellcast of Regrowth. Which is not what we are looking for.

Building more complex queries

Another example... something slightly more complex. Let's build a report that will essentially show us who has been messing up on the Sindragosa encounter. We will qualify on any line in the log file where someone got more than 5 stacks of Mystic Buffet, and 6 stacks of Instability or Chilled to the bone. But on Unchained Magic only, lets ignore the mages and Shadow priests (In my guild Kouji, Trippz, and Heartfrost) since they can Ice Block or Dispersion it. We are also only concerned about players... not pets, so adding the and targetType = "Player" will make our query slightly cleaner.

There is a formal grammar defined for the language, as well as identifiers and constants that you can use when building expressions. Constants would be things like spell, amount, targetName. They can all be found here.

In order to build your queries, looking through the constants will be required as any query will hinge upon what is available by the editor. Not everything is possible to find using the expression editor, basic rule would be if you cannot manually search the combat logs to find what you are looking for, the expression editor will not do it either. The editor is basically a way to simplify searching thousands of lines in the log file for the one piece you are interested in.

A final tip is if you are having trouble getting a large expression to work, break it up into smaller chunks... once you get the chunks working, piece it back together.