
一. 需求
源码中存在大量类似于 LOG_INFO("Operation success, result:%sn", result);
的 log 输出信息。由于使用了 log4cplus
,并且 log4cplus
会在每条 log 信息后自动加入 n
,这就导致 log 文件中存在大量的空行。因此需要将 LOG_INFO(...)
中的 n
去掉,保持 log 文件内容的紧凑性。
首先考虑使用 source insight 中的全工程内容替换功能,但是最简单的字符串替换无法满足要求。因此考虑使用正则表达式(Regular Expression)进行替换。
二. 简介
source insight 的正则表达式非常简单易用,在 source insight 的帮助文档中有对正则表达式的说明。Home --> Features and Concepts --> Regular Expressions
。
三. 说明

四. 解决
使用 log4cplus 输出 log 信息时,会用到 LOG_DEBUG, LOG_INFO, LOG_WARN, LOG_ERR
,并且 log 的内容也不确定,有长有短,唯一确定的是内容中包含一个n
,因此使用如下命令进行替换:
Old:(LOG_[DIWE].*)(n)(.*)
New:13
举例说明:
原始信息:LOG_INFO("Operation success, result:%sn", result);
替换后信息:LOG_INFO("Operation success, result:%s", result);
正则表达式 (LOG_[DIWE].*)(n)(.*)
将 LOG_INFO("Operation success, result:%sn", result);
分为 3 部分:
1
:LOG_INFO("Operation success, result:%s
2
:n
3
:", result);
替换时只需 13
即可。