labunix's blog

labunixのラボUnix

rsyslogのプライオリティ値リストを作成してみる。

■rsyslogのプライオリティ値リストを作成してみる。

$ apt-cache show rsyslog | grep Ver
Version: 8.24.0-1

■ソースのダウンロード

$ apt-get source --download-only rsyslog
$ tar zxvf rsyslog_8.24.0.orig.tar.gz
$ cd rsyslog-8.24.0/

■3ビット左シフトなので、8(2^3)すれば良い。

$ grep -A 33 LOG_EMERG ./runtime/rsyslog.h | awk '/LOG_/{gsub("LOG_","",$2);print $3"\t"$2}' |tr '[A-Z]' '[a-z]'
0	emerg
1	alert
2	crit
3	err
4	warning
5	notice
6	info
7	debug
(0<<3)	kern
(1<<3)	user
(2<<3)	mail
(3<<3)	daemon
(4<<3)	auth
(5<<3)	syslog
(6<<3)	lpr
(7<<3)	news
(8<<3)	uucp
(9<<3)	cron
(10<<3)	authpriv
(11<<3)	ftp
(12<<3)	aso
(15<<3)	caa
(16<<3)	local0
(17<<3)	local1
(18<<3)	local2
(19<<3)	local3
(20<<3)	local4
(21<<3)	local5
(22<<3)	local6
(23<<3)	local7
24	fac_invld

■ということで以下の並びとなる。
 注意点としてはkernの0とemergの0を区別するために3桁になること。

$ grep -A 33 LOG_EMERG ./runtime/rsyslog.h | \
    awk '/LOG_/{gsub("LOG_","",$2);print $3"\t"$2}' | \
    tr '[A-Z]' '[a-z]' | sed -e 's/<<3)//' -e 's/(/_ /' | \
    awk '!/24/{if($1=="_"){printf "echo \"%03d\t%s\" >> Severity.list\n",$2*8,$3} \
                      else{print "echo \""$1"\t"$2"\" >> Facility.list"}}' | sh

■Facilityが8種類なので計176種類の優先度が指定出来る。

$ echo -e $(wc -l Severity.list ;echo "\n";wc -l Facility.list) | awk 'BEGIN{a=1}{a=$1*a;print $0}END{print a}'
22 Severity.list 
 8 Facility.list
176

$ for m in $(awk '{print $1}' Severity.list );do \    
    for n in $(awk '{print $1}' Facility.list);do \      
      echo "$m $n" | awk '{print $1+$2}'; \    
    done; \  
  done | nl | awk 'END{print $1,$1/8}'
176 22

■組み合わせは176種類

$ for m in $(awk '{print $1}' Severity.list );do \
    for n in $(awk '{print $1}' Facility.list);do  \
     echo "$m $n" | awk '{print $1+$2}'; \
    done; \
  done | awk '{printf "echo %d $(grep %03d Severity.list;grep %d Facility.list)\n",$1,int($1/8)*8,$1%8}' | sh | \
  awk '{print "<"$1">",$2,$3,$4,$5}' > Priority.list

■以下のように調べる。

$ awk '/local4/&&/info/' Priority.list 
<166> 160 local4 6 info

$ awk '/local4/&&/info/{printf "%s %d(%d) %s %d %s\n",$1,int($2/8),$2,$3,$4,$5}' Priority.list 
<166> 20(160) local4 6 info

$ grep 160 Severity.list
160	local4

$ grep 6 Facility.list 
6	info

■一覧は以下。

$ cat Priority.list 
<0> 000 kern 0 emerg
<1> 000 kern 1 alert
<2> 000 kern 2 crit
<3> 000 kern 3 err
<4> 000 kern 4 warning
<5> 000 kern 5 notice
<6> 000 kern 6 info
<7> 000 kern 7 debug
<8> 008 user 0 emerg
<9> 008 user 1 alert
<10> 008 user 2 crit
<11> 008 user 3 err
<12> 008 user 4 warning
<13> 008 user 5 notice
<14> 008 user 6 info
<15> 008 user 7 debug
<16> 016 mail 0 emerg
<17> 016 mail 1 alert
<18> 016 mail 2 crit
<19> 016 mail 3 err
<20> 016 mail 4 warning
<21> 016 mail 5 notice
<22> 016 mail 6 info
<23> 016 mail 7 debug
<24> 024 daemon 0 emerg
<25> 024 daemon 1 alert
<26> 024 daemon 2 crit
<27> 024 daemon 3 err
<28> 024 daemon 4 warning
<29> 024 daemon 5 notice
<30> 024 daemon 6 info
<31> 024 daemon 7 debug
<32> 032 auth 0 emerg
<33> 032 auth 1 alert
<34> 032 auth 2 crit
<35> 032 auth 3 err
<36> 032 auth 4 warning
<37> 032 auth 5 notice
<38> 032 auth 6 info
<39> 032 auth 7 debug
<40> 040 syslog 0 emerg
<41> 040 syslog 1 alert
<42> 040 syslog 2 crit
<43> 040 syslog 3 err
<44> 040 syslog 4 warning
<45> 040 syslog 5 notice
<46> 040 syslog 6 info
<47> 040 syslog 7 debug
<48> 048 lpr 0 emerg
<49> 048 lpr 1 alert
<50> 048 lpr 2 crit
<51> 048 lpr 3 err
<52> 048 lpr 4 warning
<53> 048 lpr 5 notice
<54> 048 lpr 6 info
<55> 048 lpr 7 debug
<56> 056 news 0 emerg
<57> 056 news 1 alert
<58> 056 news 2 crit
<59> 056 news 3 err
<60> 056 news 4 warning
<61> 056 news 5 notice
<62> 056 news 6 info
<63> 056 news 7 debug
<64> 064 uucp 0 emerg
<65> 064 uucp 1 alert
<66> 064 uucp 2 crit
<67> 064 uucp 3 err
<68> 064 uucp 4 warning
<69> 064 uucp 5 notice
<70> 064 uucp 6 info
<71> 064 uucp 7 debug
<72> 072 cron 0 emerg
<73> 072 cron 1 alert
<74> 072 cron 2 crit
<75> 072 cron 3 err
<76> 072 cron 4 warning
<77> 072 cron 5 notice
<78> 072 cron 6 info
<79> 072 cron 7 debug
<80> 080 authpriv 0 emerg
<81> 080 authpriv 1 alert
<82> 080 authpriv 2 crit
<83> 080 authpriv 3 err
<84> 080 authpriv 4 warning
<85> 080 authpriv 5 notice
<86> 080 authpriv 6 info
<87> 080 authpriv 7 debug
<88> 088 ftp 0 emerg
<89> 088 ftp 1 alert
<90> 088 ftp 2 crit
<91> 088 ftp 3 err
<92> 088 ftp 4 warning
<93> 088 ftp 5 notice
<94> 088 ftp 6 info
<95> 088 ftp 7 debug
<96> 096 aso 0 emerg
<97> 096 aso 1 alert
<98> 096 aso 2 crit
<99> 096 aso 3 err
<100> 096 aso 4 warning
<101> 096 aso 5 notice
<102> 096 aso 6 info
<103> 096 aso 7 debug
<120> 120 caa 0 emerg
<121> 120 caa 1 alert
<122> 120 caa 2 crit
<123> 120 caa 3 err
<124> 120 caa 4 warning
<125> 120 caa 5 notice
<126> 120 caa 6 info
<127> 120 caa 7 debug
<128> 128 local0 0 emerg
<129> 128 local0 1 alert
<130> 128 local0 2 crit
<131> 128 local0 3 err
<132> 128 local0 4 warning
<133> 128 local0 5 notice
<134> 128 local0 6 info
<135> 128 local0 7 debug
<136> 136 local1 0 emerg
<137> 136 local1 1 alert
<138> 136 local1 2 crit
<139> 136 local1 3 err
<140> 136 local1 4 warning
<141> 136 local1 5 notice
<142> 136 local1 6 info
<143> 136 local1 7 debug
<144> 144 local2 0 emerg
<145> 144 local2 1 alert
<146> 144 local2 2 crit
<147> 144 local2 3 err
<148> 144 local2 4 warning
<149> 144 local2 5 notice
<150> 144 local2 6 info
<151> 144 local2 7 debug
<152> 152 local3 0 emerg
<153> 152 local3 1 alert
<154> 152 local3 2 crit
<155> 152 local3 3 err
<156> 152 local3 4 warning
<157> 152 local3 5 notice
<158> 152 local3 6 info
<159> 152 local3 7 debug
<160> 160 local4 0 emerg
<161> 160 local4 1 alert
<162> 160 local4 2 crit
<163> 160 local4 3 err
<164> 160 local4 4 warning
<165> 160 local4 5 notice
<166> 160 local4 6 info
<167> 160 local4 7 debug
<168> 168 local5 0 emerg
<169> 168 local5 1 alert
<170> 168 local5 2 crit
<171> 168 local5 3 err
<172> 168 local5 4 warning
<173> 168 local5 5 notice
<174> 168 local5 6 info
<175> 168 local5 7 debug
<176> 176 local6 0 emerg
<177> 176 local6 1 alert
<178> 176 local6 2 crit
<179> 176 local6 3 err
<180> 176 local6 4 warning
<181> 176 local6 5 notice
<182> 176 local6 6 info
<183> 176 local6 7 debug
<184> 184 local7 0 emerg
<185> 184 local7 1 alert
<186> 184 local7 2 crit
<187> 184 local7 3 err
<188> 184 local7 4 warning
<189> 184 local7 5 notice
<190> 184 local7 6 info
<191> 184 local7 7 debug