2

データベースにログインするために rsyslog を設定したいと思います。プログラム名には特定の構造があります。

something.{ホスト名}.{dbname}.{テーブル}

これを後で使用できる変数に分割する機会はありますか? つまり、INSERT を指定するときにテーブル名を知る必要があります。

だから私の質問はどうすればそれを行うことができますか? これは私がこれまでに持っているものです:):

# Only if we sent the log
if ($syslogfacility-text == 'local7' and $programname startswith 'something.') then {
    #############
    # Templates #
    #############

    # I need something like this but with variables
    # $template gw1,"insert into gateway (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (\'%msg%\', %syslogfacility%, \'%HOSTNAME%\', %syslogpriority%, \'%timereported:::date-mysql%\', \'%timegenerated:::date-mysql%\', %iut%, \'%syslogtag%\')",SQL

    # *.* :ommysql:127.0.0.1,Syslog,rsyslog,passwordhere;gw1
}

もう 1 つの質問は、上記が完了した場合、どうすれば $msg を動的 SQL に分割できるかということです。つまり、SQL スクリプトで列名を指定したくない場合は、値のみを指定します。値の数は、ログによって異なる場合があります。

ご協力ありがとうございました!

4

0 に答える 0