rust日志库优化方向 1)精确到微秒的日期和时间,这样一部分性能方面的问题,可以从日志中分析出来。也方便对于流程方面的信息顺序追踪。 2)thread id。这个是多线程可选。对于多线程bug定位有用。 3)准确的源码溯源。日志log函数被调用的源码文件名__FILE__,,源码行号__LINE__, 源码函数名__FUNCTION__。这样,看到日志就准确的确定是在哪部分源码中产生,debug的时候太爽了,error直接定位到源码。代码范例:log_message( str_msg );显示范例:Log: Time=2019-01-25T15:44:18.574651, Line=3339, File="haisql_asio_connect_socket.hpp", Func="listen_tcp_ip", Msg="TCP_DEFER_ACCEPT set success." 4)简单统一的调用方式。由于日志系统是所有程序员都要用的代码,要特别简单的使用,干万别让程序员输一堆参数,利用c++宏定义的方式,将上面__FILE__等等参数全部隐藏起来。 5)对于一些boost::error或者linux errorno之类的统一错误处理函数。 6)crash自动trace技术,可以在崩溃时,自动记录最后32次函数调用,直接定位故障点。启用此功能软件总体大约增加5%-10%开销,电信设备的很多软件模块刚推出到市场时均默认启用,以便捕捉到软件故障。此功能在linux下只有大约200行代码调用backtrace即可实现。 二)日志输出的定向。支持输出到屏幕,输出到文件,输出到tcp ip server。每个方向都可以单独打开或者关闭。另外,如果是多线程下,要注意输出时加锁。另外输出到tcp ip server这个功能只适合中兴华为这样的大厂,小公司别做,是适合一些嵌入式编程的远程debug分析,可以实现指定复杂系统多块单板的程序日志分析。一些厂家还实现了自动化运维等功能,启用自动化故障上报功能后,有些故障,用户还没有反馈或者感知,厂家已经拿到了第一手信息,准备故障处理和恢复了。