logo记录器针对游戏进行了优化

更新时间:2019-05-19 12:27  来源:http://www.yun365.cc
核心提示: “每一件好的软件工作都是从抓住开发人员的个人痒感开始的,”Eric Raymond写道。就我而言,我需要一个稳定,可移植,线程安全的C ++日志库,其许可证足以在商业产品中使用。所以我写了logog(http://www.logog.org),你也可以使用它。 那么为什么还有另一个
“每一件好的软件工作都是从抓住开发人员的个人痒感开始的,”Eric Raymond写道。就我而言,我需要一个稳定,可移植,线程安全的C ++日志库,其许可证足以在商业产品中使用。所以我写了logog(http://www.logog.org),你也可以使用它。

那么为什么还有另一个日志库呢?因为专业游戏具有非常特定的日志记录要求,以前任何日志系统都无法满足这些要求。

在我们的案例中,我们正在开发低级音频引擎,因此能对我们至关重要。我们需要一些与一个特定输出没有强烈联系的东西,比如stdout或stderr;它需要可以轻松扩展到缓冲内存或文件,而无需更改任何底层日志记录代。

logog支持以下能:

高能。可以在logog中完全禁用所有日志记录能。在这种情况下,logog在执行代时会产生零能损失。在将日志记录级别设置为禁用的情况下,所有日志记录能都将编译为无作。启用日志记录时,do-not-log控制路径只需要一个布尔比较。所有能关键作都已构建为具有恒定时间或接近恒定时间的能。 logog旨在假设没有内存或CPU时间可用于登录最终版本的软件。在最终发布模式下进行编译时,logog旨在完全编译 - 零内存分配,零CPU周期。记录到任意目的地。日志消息可以发送到stdout,stderr,日志文件或内存,或这些的任意网通传奇复古组合。日志类具有高度可扩展,因此可以轻松添加到新目标的日志记录。多个同时记录标准。消息可以同时记录到具有不同要求的不同日志目标:按文件,按类别,按日志级别或按组。子字符串匹配允许在日志记录条件上使用类似regexp的行为。有限的外部依赖。 logog只需要一个合理的现代标准兼容的C ++编译器(tr1或更高版本)。 logog对STL的依赖有限。这些依赖项已经过精心策划,以减轻STL的负面能影响。此外,这些依赖项已被抽象为宏,因此可以使用您自己选择的稍微兼容的模板库轻松替换STL。高度精细地控制记录哪些消息类型。可以在编译时确定对这些消息的控制以获得最大能,或者在运行时确定对这些消息的控制以在执行期间交互地启用或禁用日志消息类型。消息可以按源文件,组,类别或消息内容记录。支持高级日志记录要求。 logog的pub-sub体系结构意味着日志记录可以同时发生在多个日志目标上,每个日志目标都有自己的日志记录标准。稳定的基类允许轻松添加新的日志记录目标。极其可配置的内存使用和策略。所有内存分配都是在初始化时间之后通过用户提供的内存管理器(或默认的std :: allocator)进行的。换句话说,您可以配置所有内存分配来自您自己作者的自定义malloc()和free()样式函数。关闭后释放传奇私服挂机打怪免费版所有已分配的内存 - logog不会泄漏内存。一个特殊的编译标志(LOGOG_LEAK_DETECTION)审核每个分配并在logog中释放以发现和修复其中的内存泄漏。支持POSIX类型和Windows类型的作系统。 logog系统已在以下测试:32位和64位Windows(使用VS2008编译); Cygwin 1.7.0;和64位Ubuntu Linux 10.04 LTS。对专有游戏控制台的支持是隐含的或潜在的;该系统已被证明可用于Xbox 360和PS3(带有某些专有头文件)。对其他作系统的支持很简单;所有作系统依赖关系都封装在宏中。支持多线程。允许多个线程源同时发送日志消息。支持重新入侵。如果间接触发日志消息导致通过内存分配器或其他一些基于用户的策略触发另一条日志消息,则不允许在多线程环境中挂起logog。所有字符串的Unicode(宽字符)支持;定义LOGOG_UNICODE,所有字符串都从基于char的变为基于wchar的。详细的文档。到目前为止,最好的记录系统可用。 logog始终使用doxygen评论。非常宽松的许可证。 logog是在MIT许可下发布的,因此它可以在商业和开源项目中使用,并适当归属于logog的作者(Gigantic Software)。

上一篇:BioWare抄写员David Gaider加入Baldurs Gate dev Beamdog担任创
下一篇:在替代MMO中没有增长空间


相关文章: