Yes, if you put <fail/> in your build you are telling it to fail. There is some if/unless logic you can put in fail task but that only helps with the fail case, and unless you are having things not fail on errors I guess it wouldn't reach that.
What are you trying to accomplish with your success and fail logs? Unless you specify otherwise many (most?) tasks will halt the build when they fail. And some information is output about why it failed.
You need some confirmation that something succeeded and you aren't getting that? I'm not sure how to help when I don't understand what you are trying to accomplish.
You mentioned the sql task. It has an attribute "onerror" = Action to perform when statement fails: continue, stop, abort. Required = No, default "abort". I tried it out real quick. With the default setting I got this:
mySql:
BUILD FAILED
C:\_Work\java\build\build.xml:12: Class Not Found:
JDBC driver org.database.jdbcDriver could not be loaded