【问题标题】:Fix severity and facility in log message修复日志消息中的严重性和设施
【发布时间】:2021-12-13 10:25:16
【问题描述】:

我是 syslog-ng 的新手。我已将我的 logFile.log 包含在 syslog 配置文件中,并且服务器成功接收到日志消息。现在我想通过添加严重性和优先级来更正日志消息语法。例如,在文本日志文件中使用此语法

tag: message Syslog 服务器接收到标签和消息格式的消息,我想在文本中设置设施和严重性。时间、IP 和主机都可以。 以下配置是我的 syslog 配置文件的一部分。

source s_myLOG {
    file(/home/logFile.log);
};

log {
    source(s_myLOG);
    destination(d_net);
};

我该怎么做?谢谢

【问题讨论】:

    标签: logging syslog logfile syslog-ng logfile-analysis


    【解决方案1】:

    我假设您的意思是 /home/logFile.log 中每一行的格式如下:

    tag: message
    

    其中标记是编码系统日志设施和严重性值的十进制数。如果您可以控制写入 logFile.log 的应用程序,您唯一需要做的就是稍微更改格式:

    <tag>message
    

    使用这种格式,syslog-ng 会自动解析和提取设施/严重性信息。

    如果您无法更改应用程序并且“标签:消息”是固定格式,那么这会涉及更多内容。如果 tag 只是一个包含设施值的字符串,那很简单,假设你有一个最近的 syslog-ng 版本:

    rewrite tag_to_facility {
      set-facility("$(list-head $(explode : $MSG))")
    };
    

    同样,您可以使用 set-severity() 重写操作。

    如果标签值是数字并且恰好与 syslog 协议对设施/严重性信息的编码方式相匹配,您可以执行以下操作:

    rewrite tag_to_facility_severity {
      # $(% ) means modulo division, e.g. mask off the last 3 bits of its argument
      # $(list-head takes off the first element of a list
      # $(explode) splits an argument by a separator and returns a list
      set-severity("$(% $(list-head $(explode : $MSG)) 8)")
      set-facility("$(/ $(- $(list-head $(explode : $MSG)) $SEVERITY_NUM) 8)")
    };
    

    如您所见,syslog-ng 有一个非常强大的表达式语言,能够进行算术运算。它可能会有所改进,以便更容易屏蔽整数的位,但我已经注意到这是一个功能请求。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      相关资源
      最近更新 更多