Acho que logando a saída de cada serviço é bom, mas aqui onde trabalho tem alguns menos importantes que nem são registrados… a maioria das operações de bd daqui são registradas e também é muito importante registrar os erros/excessões lançadas.
Habilitar logs verborrágicos de toda operação SQL ou entrada e saída de todo método de toda classe pode limitar severamente a performance do seu sistema, além de gerar arquivos imensos sem finalidade clara. Tome cuidado com o que deseja logar e sempre considere se pode impactar a performance do sistema.
Por outro lado, seja mais prolixo ao logar uma situação de erro.
Fui a uma palestra, uma vez, sobre desenvolvimento, e o palestrante disse para logar tudo. Toda e qualquer coisinha. Especificamente falando, ele falou que para cada linha de código que escreve escreve umas três de log. Óbvio, o pulo do gato é fazer tudo isso fazendo log.debug(), porque aí só fica verborrágico se o responsável pelo deploy assim desejar.
Eu acho que é uma decisão sábia, logar tudo usando debug, algumas coisas usando info, e exceções usando warn (exceções críticas usando fatal, e assim por diante), porque assim o usuário decide o que é mais prioritário, checar como a aplicação se comporta ou obter mais performance.
Cara, aqui onde trabalho loga-se absolutamente tudo, ou melhor, QUASE tudo, exceto o que você vai precisar.
É balela cara, ficam logando 5 ou mais passos de cada método, mas não colocam informação nenhuma, apenas coisas toscas e sem importância como “comecei a executar método tal” ou “preparou a statement”… ou seja, o mesmo que nada.
Então pense bem o que logar, se for logar tudo pense se isso vai ser realmente útil pra você um dia. Se for logar um passo adicione informações voláteis (valores de variáveis, essas coisas, não só o passo que está no ciclo de vida do processo).
A sim, depois que peguei uns sistemas desses pra debugar em produção/homologação me tornei um “grepeador” http://en.wikipedia.org/wiki/Grep profissional de .log .
Depende também se o seu LOG terá apenas a funcao de debugar o programa ou se fará parte do processo operacional de análise do sistema em ambiente de produção.