I had a look at Knuth's The Art of Computer Programming, book 1. In chapter 1, section 1.2.2, exercise 25, he presents the following algorithm for calculating logarithm:
given $x\in[1,2)$, do the following:
L1: [Initialize] Set $y\leftarrow0$, $z\leftarrow x/2$, $k\leftarrow1$.
L2: [Test for end] If $x=1$, stop.
L3: [Compare] If $x-z<1$, go to L5.
L4: [Reduce values] Set $x\leftarrow x-z$, $z\leftarrow x/2^k$, $y\leftarrow y+\log_b(2^k/(2^k-1))$, and go to L2.
L5: [Shift] Set $z\leftarrow z/2$, $k\leftarrow k+1$, and go to L2.
(The algorithm needs an auxiliary table which stores $\log_b2$, $\log_b(4/3)$, and so on, to as many values as the precision of the computer.
Then Knuth concludes: this exercise is to explain why the above algorithm will terminate and why it computes an approximation of $y=\log_b x$.
Well, I see that it works, but I am not able to explain why...