1) Do we need to log if we are doing TDD? won't a failing test reveal what wrong with the application?
Isso pressupõe que você tenha todos os testes possíveis que seu aplicativo precisa, o que raramente é verdade. Os registros ajudam você a rastrear bugs dos quais você ainda não escreveu testes.
2) Should we add test for the logging process in each method in each class?
Se o próprio criador de logs for testado, ele não precisará ser testado novamente em cada classe, semelhante a outras dependências.
3) If some log levels are disabled in the production environment for example, won't that introduce a dependency between the tests and environment?
Humanos (e agregadores de registros) dependem dos logs, os testes não devem depender deles. Normalmente existem vários níveis de log, e alguns são usados na produção, e alguns níveis adicionais são usados no desenvolvimento, semelhante a:
"O nível de registro do Rails é info no modo de produção e depuração no desenvolvimento e teste" - link
Outras aplicações usam uma abordagem semelhante.
4) People talk about how logs ease debugging, but one of the main advantages about TDD is that I always know what's wrong due to a failing test.
Erros de produção terão passado em todos os testes, então você pode precisar de alguma outra referência para investigar esses problemas.