1

syslog エントリから情報を解析したいのPRIVALですが、必要なアルゴリズムに頭を悩ませています。

RFC5424は次のように述べています。

優先度の値は、最初にファシリティ番号に 8 を掛けてから、重大度の数値を加算して計算されます。

これで、私が理解していることは次のとおりです。

(X * 8) + y = [known number]

それで

If (X * 8) + Y = 134    
// I happen to know that X = 16 and Y = 6

あるいは

If (X * 8) + Y = 78
// What are the values of X and Y?

では、この情報を解析するための適切なアルゴリズムは何でしょうか?

4

2 に答える 2

6

RFC 5424によると、優先度の値は、範囲0..23のファシリティ値と範囲0..7の重大度の値で構成されます。優先度の値を指定すると、次のようにファシリティと重大度を抽出できます。

int priorityValue = 134; // using your example
int facility = priorityValue >> 3;
int severity = priorityValue & 7;

priorityValue = facility * 8 + severityこれは、SYSLOGデータに表示されている値を生成するために使用される合成操作の単純な反転です。次のものも使用できます。

int facility = priorityValue / 8;

整数を使用しているため、上記のビットシフト操作と同じ結果が得られるはずです。

于 2013-02-20T06:37:37.853 に答える