我正在研究C ++ 11(VS2013)中的COM组件,该组件被加载到沙箱中的另一个进程中 - 尽管能够写入磁盘。
我编写了自己的跟踪函数,进入临界区/互斥体,打开文件追加,写入时间戳和消息,离开互斥锁并返回。
但是我发现我写的这个跟踪函数有点不稳定:有些断言因不同系统中未知的原因而失败 - 考虑到跟踪函数用于追踪其他问题,这有点讽刺。所以我需要一个可靠的跟踪系统。
CRT,C ++标准库或Win32中是否有任何功能提供了一个非常简单的“即发即弃”日志记录功能(通常)不会失败?我见过ReportEvent
,但由于沙箱,我认为这不适用于我的情况。
答案 0 :(得分:2)
您应该查看Windows的事件跟踪。它非常适合您的需求:在应用程序启动时调用EventRegister(),然后调用EventWrite()来报告事件。您不需要任何特殊的系统权限 - 甚至不需要写入磁盘。当您的程序正常运行时,它不会生成任何输出。但是,如果有人正在侦听事件(例如,使用Windows性能记录器),那些事件将最终出现在跟踪文件中,可以使用各种程序查看(如果您愿意,您甚至可以自己编写监听器) 。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364162%28v=vs.85%29.aspx