우리 조직에서는 로깅에 대한 몇 가지 규칙 / 길드 라인을 정리했습니다. 추가하거나 의견을 달 수 있는지 알고 싶습니다.
우리는 Java를 사용하지만 일반적으로 loggin-규칙 및 조언에 대해 언급 할 수 있습니다.
올바른 로깅 수준을 사용하십시오.
- 오류 : 문제가 발생하여 즉시 수정해야합니다.
- 경고 : 프로세스는 수정하지 않고 계속할 수 있습니다. 응용 프로그램은이 수준을 허용해야하지만 항상 경고를 조사해야합니다.
- 정보 : 중요한 프로세스가 완료되었다는 정보
- 디버그 개발 중에 만 사용
무엇을 기록하고 있는지 확인하십시오.
로깅이 애플리케이션의 동작에 영향을 미치지 않도록하십시오
로깅 기능은 로그에 메시지를 작성하는 것이어야합니다.
- 로그 메시지는 설명적이고 명확하며 짧고 간결해야합니다.
문제 해결시 넌센스 메시지를 많이 사용하지 않습니다.
- log4j에 올바른 속성을 넣으십시오.
올바른 방법과 클래스가 자동으로 작성되도록하십시오.
예:
Datedfile-웹
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/
- 로그 값.
응용 프로그램에서 값을 기록하십시오.
- 로그 접두사.
응용 프로그램의 어느 부분에서 로깅을 작성했는지, 바람직하게는 프로젝트에서 동의 한 접두어를 사용하여 작성해야합니다. PANDORA_DB
- 텍스트의 양입니다.
로깅 텍스트가 너무 많지 않도록주의하십시오. 앱의 성능에 영향을 줄 수 있습니다.
- 로그온 형식 :
log4j와 함께 사용하는 여러 변형 및 방법이 있지만 예외를 기록 할 때 다음 형식을 균일하게 사용하고 싶습니다.
logger.error("PANDORA_DB2: Fel vid hämtning av frist i
TP210_RAPPORTFRIST", e);
위의 예제에서 클래스와 메소드를 자동으로 쓰도록 log4j 속성을 설정했다고 가정합니다.
항상 다음이 아닌 로거를 사용하십시오.
System.out.println(), System.err.println(), e.printStackTrace()
웹 애플리케이션이 프레임 워크를 사용하는 경우 핸들러에서 try-catch를 사용하고 위 모델에 따라 로깅하는 경우 EJB에서 매우 자세한 오류 정보를 얻을 수 있습니다.
프로젝트에서 우리는 메소드와 클래스 이름이 자동으로 쓰여지는이 변환 패턴을 사용합니다. 여기서 콘솔과 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
위의 예와 방법으로 클래스를 작성하십시오. 콘솔에서 행 번호도 작성됩니다.
toString()
toString()
모든 물건에 대해 부탁 합니다. 전의:
@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();
}
이러한 출력을 만드는 특별한 방법 대신
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);
}
로깅을 사용하는 이러한 방법으로 추가, 의견 또는 의심스러운 점이 있습니까? Java, Java 및 log4j와 관련이없는 경우에도 자유롭게 대답하거나 의견을 보내십시오.