我正在阅读 模板文件的rsyslog找到更好的性能,我偶然发现了这一个:
spifno1stsp - expert options for RFC3164 template processing
但是,正如您所看到的,文档非常模糊。此外,我无法在任何地方找到更长的解释。在 Google 上找到的唯一提及总是关于相同的片段或相同的非常简短的描述。
确实,这个属性没有解释:
就像每个人都在这里和那里复制和粘贴相同的片段,但很难理解它实际上在做什么。
任何的想法 ?
把它想象成有点像 if 语句。如果存在空格,请不要执行任何操作。否则,如果空间不存在,添加一个空格。
它有助于确保只在输出中添加一个空格,通常在两个字符串之间。
对于任何此类情况,如果您发现文档可以改进,请随时在官方GitHub rsyslog 文档项目中提出问题并要求澄清。文档团队人手不足,但团队成员会尽可能提供帮助。
如果您正在寻找一般帮助,rsyslog-users 邮件列表也是一个很好的资源。多年来,我通过查阅档案和阅读以前的主题学到了很多东西。
回到你关于spifno1stsp选项的问题:
虽然您会在该选项上获得一些点击,但您可能会发现更多结果是搜索较旧的字符串模板选项sp-if-no-1st-sp. 以下是您链接到的文档页面中的使用示例:
template(name="forwardFormat" type="string"
string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
)
Run Code Online (Sandbox Code Playgroud)
这是此处相关的特定部分:
`%msg:::sp-if-no-1st-sp%%msg%`
Run Code Online (Sandbox Code Playgroud)
从属性替换器文档:
sp-if-no-1st-sp
这个选项看起来很吓人,用户可能不应该使用。对于给定的任何字段,它返回单个空格字符或根本不返回任何字符。永远不会返回字段内容。当(且仅当)字段内容的第一个字符不是空格时,才返回空格。此选项是一种解决 RFC 3164 中的问题的技巧:3164 指定 syslog 标记序列和实际消息文本之间没有分隔符。事实上,几乎所有的实现都用一个空格来分隔两者。从 RFC 3164 开始,此空间是消息文本本身的一部分。这会导致构建消息时出现问题(例如写入磁盘或转发时)。如果消息不是以空格开头,是否应该包含分隔空格?如果不是,则标签后面紧跟另一个非空格字符,这可能会导致一些日志解析器误解标签是什么以及消息是什么。问题终于在klog模块重组,标签正确写入后才浮出水面。它也与其他消息源一起存在。解决方案是引入这个特殊的属性替换选项。现在,默认模板可以包含条件空间,仅当消息不以 1 开头时才存在。虽然这并不能解决所有问题,但在绝大多数情况下它应该足够好。如果你阅读了这篇文章并且不知道它在说什么 - 放松:这是一个很好的迹象,你永远不需要这个选项。只需忘记它;) 问题终于在klog模块重组,标签正确写入后才浮出水面。它也与其他消息源一起存在。解决方案是引入这个特殊的属性替换选项。现在,默认模板可以包含条件空间,仅当消息不以 1 开头时才存在。虽然这并不能解决所有问题,但在绝大多数情况下它应该足够好。如果你阅读了这篇文章并且不知道它在说什么 - 放松:这是一个很好的迹象,你永远不需要这个选项。只需忘记它;) 问题终于在klog模块重组,标签正确写入后才浮出水面。它也与其他消息源一起存在。解决方案是引入这个特殊的属性替换选项。现在,默认模板可以包含条件空间,仅当消息不以 1 开头时才存在。虽然这并不能解决所有问题,但在绝大多数情况下它应该足够好。如果你阅读了这篇文章并且不知道它在说什么 - 放松:这是一个很好的迹象,你永远不需要这个选项。只需忘记它;) 虽然这并不能解决所有问题,但在绝大多数情况下它应该足够好。如果您阅读了本文但不知道它在说什么 - 放松:这是一个很好的迹象,您将永远不需要此选项。只需忘记它;) 虽然这并不能解决所有问题,但在绝大多数情况下它应该足够好。如果您阅读了本文但不知道它在说什么 - 放松:这是一个很好的迹象,您将永远不需要此选项。只需忘记它;)
简而言之,sp-if-no-1st-sp(字符串模板选项)类似于spifno1stsp(标准模板选项)。
希望有帮助。
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |