メッセージフォーマット

メッセージフォーマット

転送時のsyslogメッセージは分離可能な3つの要素で構成されます。それぞれPRI、HEADER、MSGと呼ばれます。全長は1024バイト以内です。

メッセージフォーマットの3つの要素

PRI

3、4または5文字であり、はじめは"<"、終わりが>"です。

コードは8ビットフィールドの7ビットASCIIが使用されます。
これらは"USA Standard Code for Information Interchange"として定義されています。
かぎ括弧の間の数はプライオリティでありファシリティとセベリティをあらわします。

プライオリティは0から9までの1,2又は3桁の10進数です。
ファシリティとセベリティは10進数の数字コードです。
いくつかのOSやデーモンにはにはファシリティがアサインされています。
明示的にアサインされていない場合は"local user"ファシリティや"user level"ファシリティをアサインすることができます。
これらのファシリティとセベリティは下の表に示します。

プライオリティ値=ファシリティx8 + セベリティです。
つまりセベリティがEmergency(セベリティ=0)のカーネルメッセージ(ファシリティ=0)のプライオリティは0です。
local user4(ファシリティ=20)のNotice(セベリティ=5)メッセージは165です。
SyslogメッセージのPRIはそれぞれ<0>と<165>となります。

数字コード ファシリティ
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon
10 security/authorization messages
11 FTP daemon
12 NTP subsystem
13 log audit
14 log alert
15 clock daemon
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)
数字コード セベリティ
0 Emergency: system is unusable
1 Alert: action must be taken immediately
2 Critical: critical conditions
3 Error: error conditions
4 Warning: warning conditions
5 Notice: normal but significant condition
6 Informational: informational messages
7 Debug: debug-level messages

HEADER

タイムスタンプとホスト名あるいはデバイスIPアドレスを含みます。必ず印刷可能文字です。PRIと同じく8ビットフィールドの7ビットASCIIが使用されます。

TIMESTAMPはPRIの">"に続きます。
TAIMESTAMPとHOSTNAMEのあとはひとつのスペースです。
HOSTNAMEはホスト名あるいはIPアドレスです。TIMESTAMPはローカル時刻でフォーマットは"Mmm dd hh:mm:ss"です。Mmmは英語3文字の月であり先頭が大文字、それ以降は小文字です。
ddは日で10未満はスペース+数字です。8月7日は"Aug  7"でgと7の間にはスペースが2つあります。
"hh"は24時間表示の時間であり00から24、"mm"と"ss"は00から59までの分と秒です。
TIMESTAMPのあとはひとつのスペースです。
HOSTNAMEはホスト名、IPv4アドレス、IPv6アドレスのいずれかです。
HOSTNAMEのあとはひとつのスペースです。

MSG

Syslogパケットの残りでありテキストメッセージで追加情報を含みます。
終了区切りはありません。
印字可能文字でなければなりません。
文字セットは受信者を考慮できます。

受信者が読めない文字では意味がありません。
MSGにはTAGとCONTENTの2つのフィールドがあります。
TAGフィールドの値はメッセージを生成したプログラムやプロセス名、CONTENTにはメッセージの詳細が含まれます。
TAGは32文字以内であり、英数字以外はTAGフィールドの終わりを示します。

通常"[",":", " "などが使われます。

<34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8

<13>Feb 5 17:32:18 10.0.0.99 Use the BFG!

<165>Aug 24 05:34:00 CST 1987 mymachine myproc[10]: %% It's time to make the do-nuts. %% Ingredients: Mix=OK, Jelly=OK # Devices: Mixer=OK, Jelly_Injector=OK, Frier=OK # Transport: Conveyer1=OK, Conveyer2=OK # %%

※2019/3/28
上述のメッセージ例はRFCに準拠していないため、取り消しました。