在我的组织中,我们整理了一些有关日志记录的规则/准则,我想知道您是否可以添加或评论。
我们使用Java,但您可能会对Loggin进行一般性评论-规则和建议
使用正确的日志记录级别
- 错误:出了点问题,需要立即修复
- 警告:此过程可以继续进行而不进行修复。应用程序应容忍此级别,但警告应始终得到调查。
- INFO:重要过程完成的信息
- 调试。仅在开发期间使用
确保您知道要记录的内容。
避免日志记录影响应用程序的行为
日志记录的功能应该是在日志中写入消息。
- 日志消息应具有描述性,清晰,简短和简洁。
故障排除时,废话消息的使用很少。
- 将正确的属性放入log4j
输入正确的方法和类是自动编写的。
例:
日期文件-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/
- 日志值。
请记录应用程序中的值。
- 日志前缀。
声明日志记录是从应用程序的哪一部分写入的,最好带有项目约定前缀的内容,例如 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()
如果Web应用程序使用我们的框架,则可以从EJB中获得非常详细的错误信息,如果在处理程序中使用try-catch并根据上述模型进行日志记录:
在我们的项目中,我们使用这种转换模式,通过该转换模式可以自动写出方法和类名。在这里,我们为控制台和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只是其推理方式的实现。