What's wrong in your equation is your implementation of the log function. Edit: Let me rephrase that... log(QxP) != Log(Q)+Log(P) becasuse the QxP is already a 'truncated' operation, that only reflects 1/2 of the rotation (from +1 to -1 in one direction); the seperate operation is equivalent, if you exp( Log(Q)+Log(P) ) it will truncate to QXP....
I started this project to explore log quaternions. From initial research, I gathered that just because Q != ln(exp(Q)) doesn't mean that for every lnQ, exp(lnQ) = Q. That is that log quaternions are a field, of which a projection into quaternion space can happen, but there is no way to reverse the transform without additional information about the quaternion.
The system of log-quaternions is truly linear, in a manhattan-normal sense of linear. The sum of the angles is the total rotation of the system; there are many implementations that presume that a normal vector (1) is a square-normal and not a linear normal, which results in a sort of logrithmic output of exp(lnQ).
The log-quaternions may be considered 'curvatures' rather than 'angles', although numerically and functionally equivalent in many cases... the 'curvature' applied to the point (0,1,0) {some arbitrary 'up'} results in that point in a different direction. It doesn't matter if the curvature is a small principal arc-length like pi/4, or some more acute curvature that wraps multiple times before being offset by pi/4... K2pi + pi/4 , the same projection results....
Interactive demo - the slider X/T/Z control the curvature (angles of rotation) around the x-y-z axles (axle because they spin, right?) The Y controls the twist at the point x/y/z rotate (curve?) (0,1,0) to.