apple logger(ASL)忽略/etc/asl.conf中针对特定设施

时间:2016-01-13 08:09:35

标签: c++ macos logging syslog asl

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

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

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

这是我的设施定义为com.bla.bla的configuraiton     asl.conf     ? [< = Level notice]文件system.log

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

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

有什么规则我可以​​添加到仅禁止来自system.log的消息吗?

谢谢

1 个答案:

答案 0 :(得分:0)

在一遍又一遍地重读asl.conf手册后,我发现我可以使用&#39;声明&#39;命令忽略我的特定规则的asl.conf基本配置文件

  

声明与“&_ 39;声明”相关联的查询匹配的邮件。主ASL配置文件/etc/asl.conf不处理操作。虽然声称的消息不是由/etc/asl.conf处理过的,但它们并不完全是私有的。其他模块也可以声明消息,并且在一些情况下,两个或更多个模块可以具有与相同消息匹配的声明动作。此操作仅阻止/etc/asl.conf处理。   '声明&#39;动作之后可能只有关键字&#39;。在这种情况下,只有符合“声称”的消息才会被声明。查询将由后续处理   模块中的规则。

我按照标签说明&#39;索赔&#39;并将以下配置添加到我的配置文件中:

public function rules()
{
    switch($this->method())
    {
        case 'GET':
        case 'DELETE':
        {
            return [];
        }
        case 'POST':
        {
            return [
                'morph' => 'required',
                'sex' => 'required',
                'genetics' => 'required',
                'name' => "required|unique:geckos,name,NULL,id,user_id," . \Auth::user()->id
            ];
        }
        case 'PUT':
        case 'PATCH':
        {
            return [
                'morph' => 'required',
                'sex' => 'required',
                'genetics' => 'required',
                'name' => "required|unique:geckos,name,NULL,id,user_id," . \Auth::user()->id
            ];
        }
        default:break;
    }
}