Na minha organização, reunimos algumas regras / guildelines sobre o registro que eu gostaria de saber se você pode adicionar ou comentar.
Usamos Java, mas você pode comentar em geral sobre loggin - regras e conselhos
Use o nível de log correto
- ERRO: Algo deu muito errado e precisa ser corrigido imediatamente
- AVISO: O processo pode continuar sem correção. O aplicativo deve tolerar esse nível, mas o aviso sempre deve ser investigado.
- INFO: informações de que um processo importante foi concluído
- DEPURAR. Só é usado durante o desenvolvimento
Verifique se você sabe o que está registrando.
Evite que o registro influencie o comportamento do aplicativo
A função do log deve ser escrever mensagens no log.
- As mensagens de log devem ser descritivas, claras, curtas e concisas.
Não há muito uso de uma mensagem sem sentido na solução de problemas.
- Coloque as propriedades corretas no log4j
Coloque que o método e a classe certos são escritos automaticamente.
Exemplo:
Datedfile -web
log4j.rootLogger=ERROR, DATEDFILE
log4j.logger.org.springframework=INFO
log4j.logger.waffle=ERROR
log4j.logger.se.prv=INFO
log4j.logger.se.prv.common.mvc=INFO
log4j.logger.se.prv.omklassning=DEBUG
log4j.appender.DATEDFILE=biz.minaret.log4j.DatedFileAppender
log4j.appender.DATEDFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATEDFILE.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%C{1}.%M] - %m%n
log4j.appender.DATEDFILE.Prefix=omklassning.
log4j.appender.DATEDFILE.Suffix=.log
log4j.appender.DATEDFILE.Directory=//localhost/WebSphereLog/omklassning/
- Valor do log.
Por favor, registre valores do aplicativo.
- Prefixo do log.
Indique de que parte do aplicativo é que o registro foi gravado, de preferência com algo para o prefixo acordado do projeto, por exemplo PANDORA_DB
- A quantidade de texto.
Tenha cuidado para que não haja muito texto de log. Pode influenciar o desempenho do aplicativo.
- Formato de registro:
-Existem várias variantes e métodos para usar com o log4j, mas gostaríamos de um uso uniforme do seguinte formato, quando registramos com exceções:
logger.error("PANDORA_DB2: Fel vid hämtning av frist i
TP210_RAPPORTFRIST", e);
No exemplo acima, supõe-se que configuramos as propriedades do log4j para que ele grave automaticamente a classe e o método.
Sempre use o logger e não o seguinte:
System.out.println(), System.err.println(), e.printStackTrace()
Se o aplicativo Web usar nossa estrutura, você poderá obter informações de erro muito detalhadas do EJB, se estiver usando try-catch no manipulador e efetuando log de acordo com o modelo acima:
Em nosso projeto, usamos esse padrão de conversão com o qual os nomes de métodos e classes são gravados automaticamente. Aqui, usamos dois pattents diferentes para o console e o datedfileappender:
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.DATEDFILE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
Nos exemplos acima, o método e a classe serão gravados. No número da linha do console também será escrito nosso.
toString()
Por favor, tenha um toString()
para cada objeto. EX:
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(" DwfInformation [ ");
sb.append("cc: ").append(cc);
sb.append("pn: ").append(pn);
sb.append("kc: ").append(kc);
sb.append("numberOfPages: ").append(numberOfPages);
sb.append("publicationDate: ").append(publicationDate);
sb.append("version: ").append(version);
sb.append(" ]");
return sb.toString();
}
em vez de um método especial que faz essas saídas
public void printAll()
{
logger.info("inbet: " + getInbetInput());
logger.info("betdat: " + betdat);
logger.info("betid: " + betid);
logger.info("send: " + send);
logger.info("appr: " + appr);
logger.info("rereg: " + rereg);
logger.info("NY: " + ny);
logger.info("CNT: " + cnt);
}
Então, há algo que você possa adicionar, comentar ou achar questionável com essas maneiras de usar o registro? Sinta-se à vontade para responder ou comentar, mesmo que não esteja relacionado a Java, Java e log4j, é apenas uma implementação de como isso é fundamentado.