Triggers not as described

Here https://www.openhab.org/docs/configuration/rules-dsl.html#event-based-triggers
Is described that received command triggers are called before the state ist changed.

But that seems not be the case if I log an item state it has already the new state.

Maybe depends on system performance. For most people it holds true, because commands never directly update an Items state. Something else has to trigger from the command to do that - a binding, another rule, autoupdate etc.
But it’s just possible for one of those to happen between your rule trigger and your logging code.

You can’t rely on it happening in any particular order.

Which is not a contradiction. It depends on system performance and current load.
It also depends on the use case and item type: some - those to take a fair amount of time to change in the real world, think of mechanical relays or fading dimmer lights - OH won’t update item state until they confirm they’re done changing. But triggers already apply when they’re known to change, e.g. when you use the UI.