Lumberjaxe Code Golf
JavaScript (Node.js), 52 bytes
Takes input as (b)(n), where b is a Buffer (using the characters described in the challenge) and n is the durability of the axe.
Returns a Boolean value and 2 integers as [ broken, [ small, big ]].
b=&gt;n=&gt;[b.some(c=&gt;(n-=6&amp;c+1)&lt;0||!++a[c%3],a=[0,0]),a]

Try it online!
How?
Given an ASCII code c, we use 6 &amp; (c + 1) to get the number of swings needed to chop the tree, and c % 3 to get an index into the tree-counting array a[] (0 for small, 1 for big).
 char. | c = ASCII code | 6 &amp; (c + 1) | c % 3
-------+----------------+-------------+-------
  'i'  |       105      |      2      |   0
  '|'  |       124      |      4      |   1