在进入 syslog 文件时删除 \r
Posted
技术标签:
【中文标题】在进入 syslog 文件时删除 \\r【英文标题】:removing \r as they go into syslog file在进入 syslog 文件时删除 \r 【发布时间】:2013-06-07 08:57:10 【问题描述】:我正在编写一个可以在 Linux 和 Windows 上运行的应用程序。为了便于携带,换行被视为\r\n。这个应用程序正在记录一些有用的信息以进行调试。它是在 Linux 中记录信息的系统日志。打开 syslog 文件时,所有的 \r 字符都显示为 ^M。我发现在 syslog 文件上使用 dos2unix 会删除 ^M。但我想在 ^M 进入系统日志时删除它们。如果除了更改代码(使用#ifdefs)之外还有任何配置设置或任何其他解决方法,请有人提供。谢谢...
【问题讨论】:
【参考方案1】:如果您不在 Windows 上,请不要写 \r。
您可以定义一个 NEWLINE 常量,如下所示:
#ifdef _WINDOWS
#define NEWLINE '\r\n'
#else
#define NEWLINE '\n'
#endif
并使用它。
请参阅here 了解更多信息。
【讨论】:
【参考方案2】:在 Linux 中使用 Windows 新行不是“可移植的”。
您应该更改代码,而不是在 Windows 或 Linux 中记录 \r 或 \n,在 syslog 中记录新行是不好的做法,因为“传统”记录格式用 \n 分隔文件.如果您有任何额外的 \n 工具读取文件将会中断。通常,新行分隔文件中不以“
如果您使用 rsyslog,您可以使用 drop-cc 去除消息中的控制字符。
【讨论】:
以上是关于在进入 syslog 文件时删除 \r的主要内容,如果未能解决你的问题,请参考以下文章