苹果记录器(ASL)忽略 /etc/asl.conf 中特定设施的规则

Posted

技术标签:

【中文标题】苹果记录器(ASL)忽略 /etc/asl.conf 中特定设施的规则【英文标题】:apple logger (ASL) ignoring rule in /etc/asl.conf for specific facility 【发布时间】:2016-01-13 08:09:34 【问题描述】:

我有一个发送 asl 日志消息的 C/C++/Objective-C 项目。

asl.conf 中的默认配置将所有级别高于通知的日志消息路由到系统日志(请参阅下面的规则),我想仅为我的特定设施取消此规则。

这意味着,我设施下的所有日志消息将仅路由到我的日志文件,而不是 system.log。

这是我的设施被定义为 com.bla.bla 的配置 asl.conf ? [

my_asl.conf
? [<= Level notice] [=Facility com.bla.bla] skip / ignore 

我试过跳过和忽略,但我没有做任何改变。唯一有效的是从 asl.conf 中删除规则,但我不想更改其他进程/设施的行为并修改一些默认规则。

我可以添加任何规则来禁止来自 system.log 的消息吗?

谢谢

【问题讨论】:

在apple.stackexchange.com提问 【参考方案1】:

一遍又一遍地重新阅读 asl.conf 手册页后,我发现我可以使用 'claim' 命令来忽略我的特定规则的 asl.conf 基本配置文件

claim 与“claim”操作关联的查询匹配的消息不会由主 ASL 配置文件 /etc/asl.conf 处理。虽然声明的消息不会被 /etc/asl.conf 处理,但它们并不是完全私有的。其他模块也可以声明消息,并且在某些情况下,两个或多个模块可能具有匹配相同消息的声明操作。此操作仅阻止 /etc/asl.conf 的处理。 `claim' 动作后面可以跟关键字 'only'。在这种情况下,只有那些匹配“仅声明”查询的消息才会被后续处理 模块中的规则。

我按照标签“claim”的描述,在我的配置文件中添加了以下配置:

? [= com.bla.bla] file /var/log/my-log
? [= com.bla.bla] claim  

【讨论】:

以上是关于苹果记录器(ASL)忽略 /etc/asl.conf 中特定设施的规则的主要内容,如果未能解决你的问题,请参考以下文章

如何使用WinDBG跟踪调试ASL/ACPI

如何使用WinDBG跟踪调试ASL/ACPI

ASL:asl_search() 无法获取 asl_log() 写入的日志

asl.h 的评论中的 ASL 服务器是啥

Java 实现顺序查找

数据结构第七章学习小结