很多次我看到记录这样的错误:
System.out.println("Method aMethod with parameters a:"+a+" b: "+b); print("Error in line 88");
那么..记录错误的最佳做法是什么?
编辑:
这是java但可能是C/C++,基本等.
直接登录到控制台是可怕的,坦率地说,是一个没有经验的开发人员的标志.做这种事情的唯一原因是1)他或她不知道其他方法,和/或2)开发人员没有想到将他/她的代码部署到生产站点时会发生什么,以及如何在该点维护应用程序.处理记录1GB /天或更多完全不需要的调试日志记录的应用程序是令人抓狂的.
普遍接受的最佳做法是使用具有以下概念的Logging框架:
不同的日志对象 - 不同的类/模块/等可以记录到不同的记录器,因此您可以选择将不同的日志配置应用于应用程序的不同部分.
不同的日志级别 - 因此您可以调整日志记录配置以仅记录生产中的错误,在开发环境中记录各种调试和跟踪信息等.
不同的日志输出-框架应允许您配置在那里日志输出,而不需要在代码库中的任何改变发送到.您可能希望将日志输出发送到的不同位置的一些示例是文件,基于日期/大小滚动的文件,数据库,电子邮件,远程接收器等.
日志框架应该永远永远 永远遥,从日志代码的任何异常或错误.您的应用程序应该无法加载或无法启动,因为日志框架无法创建它的日志文件或获取文件锁定(除非这是一个关键要求,可能出于法律原因,对您的应用程序).
您将使用的最终日志框架当然取决于您的平台.一些常见的选择:
Java的:
Apache Commons Logging
log4j的
的logback
内置java.util.logging
.净:
log4net的
C++:
log4cxx
Apache Commons Logging不适用于应用程序常规日志记录.它旨在供不希望强制API用户使用日志记录的库或API使用.
Commons Logging也存在类加载问题.
选择[很多]日志API中的一个,最广泛使用的可能是log4j或Java Logging API.
如果您想要实现独立性,您可能需要考虑log4j的原作者SLF4J.
说完拿起一个实现,然后使用该执行中的日志记录级别/严重性一致,从而使搜索/过滤日志更容易.