【问题标题】:Processing multi line log entry into a single line将多行日志条目处理为单行
【发布时间】:2015-03-16 11:15:46
【问题描述】:

我一直在使用 awk 命令将 XML 标记添加到代理错误日志

awk ‘{ print “<record><data name=\”F1\” <value>=\””$1”\”/><data name=\”F2\” <value>=\””$2”\”/><data name=\”F3\” <value>=\””$3”\”/>; for ( i=4; i<=NF; i++ ) {printf “%s “, $i}; print (“\””); printf (“\n”) }’

每个日志条目由“TIMESTAMP”“LOG PRIORITY”“UID”“MESSAGE”组成 并且每 5 分钟轮换一次,此代码针对轮换的日志运行。

今天我开始收到多行日志条目,需要将其转换为格式的单行条目

[16/Mar/2015:10:34:12] Security(29264):
        [CLIENT4330] HTTP5094: while trying to get attribute “user”
        [CLIENT4330] HTTP5094: while trying to get attribute “invalid-password”
        [CLIENT4330] HTTP5094: ldap password check: LDAP error:
[16/Mar/2015:10:34:12] <Next Log entry>
[16/Mar/2015:10:34:12] <Next Log entry>

我一直在尝试解决如何捕获多行日志条目并将它们加入到附加到时间戳的单行条目中。 缩进为 8 个空格。

此代码在 Solaris 10 实例上运行,除了默认安装之外,我无法添加任何其他软件或模块。

谢谢

【问题讨论】:

    标签: logging awk


    【解决方案1】:

    如果行不是以[ 开头,这会将所有日志转换回单行

    awk '{printf "%s",(/^\[/?RS $0:$0)}' file
    
    [16/Mar/2015:10:34:12] Security(29264):        [CLIENT4330] HTTP5094: while trying to get attribute .user.        [CLIENT4330] HTTP5094: while trying to get attribute .invalid-password.        [CLIENT4330] HTTP5094: ldap password check: LDAP error:
    [16/Mar/2015:10:34:12] <Next Log entry>
    [16/Mar/2015:10:34:12] <Next Log entry>
    

    如果你想去掉第一个空行并在最后换一个新行,使用这个:

    awk '{printf "%s",(/^\[/ && NR>1?RS $0:$0)} END {print ""}' t
    [16/Mar/2015:10:34:12] Security(29264):        [CLIENT4330] HTTP5094: while trying to get attribute .user.        [CLIENT4330] HTTP5094: while trying to get attribute .invalid-password.        [CLIENT4330] HTTP5094: ldap password check: LDAP error:
    [16/Mar/2015:10:34:12] <Next Log entry>
    [16/Mar/2015:10:34:12] <Next Log entry>
    

    如果需要,也可以修剪掉多余的空间。

    【讨论】:

    • 谢谢,我无法让它与我现有的 awk 脚本一起工作,因为它会弄乱标记,所以我将它设置为预过滤器,它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多