I would say logic, at least formal logic, is limited in tangible ways.
- First and foremost, to use any formal logic, the semantics (the "model" if you will), has to be well defined, and fixed. Note the semantics can be quite complicated, if you want, but simpler semantics are easier to use.
A lot of times, even people making "logical" arguments, even when using formal means to do it, and even when every premise looks the same, different conclusions can be drawn due to differing semantics.
Think of it this way, if it'll help. When someone writes a C-compiler with different semantics but the same grammar, very different results are possible from the same program. This is actually a very real problem that programmers face (luckily only in extreme cases). Hardware designers use "synthesizers" (which are basically compilers for hardware) and well as simulators that work on the same language (verilog or VHDL usually). Sometimes the synthesized circuit exhibits different behavior from the circuit input to the synthesizer, because the synthesizer and simulator used semantics that were incompatible.
- Formal logic is further limited by the fact that to say anything with substance...that is anything that is not a tautology (and even the truth of tautologies are dependent on the semantics), it needs the use of "axioms" or "postulates" or something of that sort.
- There are further limits to the completeness and consistency of formal systems. To put the results of these types of things in simple terms...a formal system that is self-consistent, may not be able to extract all that is true in the real life system it is meant to represent.
This is not meant to be an exhaustive list by an means. I believe the limits placed on calculating mechanisms of logic, by physics has already been discussed.
With all that said, the combination of human ingenuity and formal logic has produced the information age, without which we wouldn't be able to have this sort of conversation. Compiler designers come face-to-face with all the limitations of logic I mentioned, but have devised ingenious ways to circumvent these problems for practical cases.
We have then further used our logical capabilities (enhanced by machines of our creation) to start to decode the very "code" of life.
Not to say that it was logic alone that achieved these things, but formal logic played very crucial roles.