Cha*_*ell 1 .net c# bit-manipulation syslog
我想PRIVAL从 syslog 条目中解析信息,但我无法理解所需的算法。
RFC5424说:
Priority 值的计算方法是首先将 Facility 编号乘以 8,然后加上 Severity 的数值。
有了这个,这就是我所理解的。
(X * 8) + y = [known number]
Run Code Online (Sandbox Code Playgroud)
所以
If (X * 8) + Y = 134
// I happen to know that X = 16 and Y = 6
Run Code Online (Sandbox Code Playgroud)
或者
If (X * 8) + Y = 78
// What are the values of X and Y?
Run Code Online (Sandbox Code Playgroud)
那么解析这些信息的合适算法是什么?
根据 RFC 5424,优先级值由范围 0..23 中的设施值和范围 0..7 中的严重性值组成。给定优先级值,您可以按如下方式提取设施和严重性:
int priorityValue = 134; // using your example
int facility = priorityValue >> 3;
int severity = priorityValue & 7;
Run Code Online (Sandbox Code Playgroud)
这是priorityValue = facility * 8 + severity用于生成您在 SYSLOG 数据中看到的值的组合操作的简单反转。您还可以使用:
int facility = priorityValue / 8;
Run Code Online (Sandbox Code Playgroud)
由于我们正在处理整数,这应该会为您提供与上述位移操作相同的结果。