我正在从事一个跨国项目,其中日志的目标受众可能来自两个国家。因此,用一种以上的语言登录变得越来越重要,每次登录时,我都会考虑根据语言写入两个不同的日志文件夹,但我也在想,像log4cpp这样的日志框架是否有一些开箱即用的功能?
正如其他评论者所提到的,想要进行多语言日志记录听起来像是走错了路。
我的建议是使用英语(这是技术信息的标准,我想这是你最熟悉的语言),并确保你使用的语言是清晰、语法正确和毫不含糊。然后,如果其中一名技术人员无法理解,他们可以通过谷歌翻译等机器翻译引擎轻松高效地运行它。事实上,他们可以处理日志,并通过谷歌翻译运行所有内容来附加翻译文本,特别是如果你对日志进行注释以标记语言内容。
假设输入语言写得很好,机器翻译通常会给出最终用户能够理解的好结果。如果信息不清晰,有拼写错误或缩写,那么这就是机器翻译失败的地方。
写入日志自然会降低执行速度,因为其中包括文件打开、查找和写入操作。
这是许多开发人员和架构师建议在不同级别编写日志的主要原因之一。随着级别的增加,增加日志条目的深度可以更好地跟踪问题。在更高的级别上,您会注意到由于生成了更多的日志条目,您的处理速度会下降。
相反,建议您使用可以从一种语言翻译成另一种语言的服务。我相信有免费或付费的图书馆做这个翻译。您可以创建一个在后台运行的小型实用程序,并在进程空闲时间进行转换。
一个建议是,您可以使用一个不同的进程/线程来侦听日志消息,您可以从那里对其进行日志记录。。
这减少了主进程/线程中的I/O日志记录时间,并且您可以在那里进行与日志记录语言相关的所有更改。。
对于多语言支持,我认为您可以尝试使用宽字符字符串进行编写。。虽然我不确定。。
使用c++进行日志定位的最佳方法
安装Qt 4并对字符串使用QObject::tr/tr()宏。用你想要的任何语言编写字符串。雇佣/聘请翻译人员使用QT语言学家对字符串进行本地化。
请注意,完美的翻译是不可能的,所以会有很多"有趣"的误解,即使你的翻译是个天才。因此,为编程团队选择主要语言可能是一个更好的主意。
--编辑--
之前没有注意到这个部分:
一种以上语言的
实现它的一种方法是实现日志读取器。如果字符串被格式化,您可以转储消息id(由某种宏生成)和字符串参数,而不是编写纯文本消息。"日志读取器"将允许用户在查看日志文件时选择所需的语言,并使用类似于QTranslator的机制根据其ids/参数翻译消息。这种方法的好处是以后可以添加更多的语言,因此可以重新翻译旧日志。糟糕的是,对于"普通人"来说,这种格式将更难阅读,尽管除了消息ID和参数之外,您还可以添加明文消息,并且需要编写日志查看器。
Qt4已经实现了这个框架的大部分(有一些例程用于将变体转储到文本/数据流中,等等)以及翻译工具。有关更多信息,请参阅QTranslator文档和语言学家手册。