首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bro:禁用所有日志生成

Bro:禁用所有日志生成
EN

Stack Overflow用户
提问于 2016-11-21 21:57:31
回答 3查看 1.2K关注 0票数 1

我创建了一个bro脚本,目的是从pcap文件中提取所有可能的协议的所有文件。但是我不想写所有的日志。Bro为每个协议创建一个日志文件。例如:'http.log','smtp.log‘等。甚至会生成一个'weird.log’。我的pcap文件很大(20 of ),所以每个日志文件包含超过30mb的信息。这种日志生成会降低文件提取的性能。我可以使用行Log::disable_stream(Conn::LOG)禁用'conn.log‘,但是,所有协议日志记录怎么办??这是我的脚本

代码语言:javascript
复制
@load base/files/extract

event bro_init()
    {
        Log::disable_stream(Conn::LOG);

    }

event file_sniff(f: fa_file, meta: fa_metadata)
    {
    local ext = "";

    if ( meta?$mime_type )
        ext = split_string(meta$mime_type, /\//)[1];
    local fname = fmt("%s-%s.%s", f$source, f$id, ext);
    Files::add_analyzer(f, Files::ANALYZER_EXTRACT, [$extract_filename=fname]);
    }
EN

回答 3

Stack Overflow用户

发布于 2017-03-01 16:10:10

您可以像这样使用none编写器:

代码语言:javascript
复制
bro -r packets.pcap Log::default_writer=Log::WRITER_NONE

不过,我并不完全相信写这些日志会以任何真正的方式损害你的性能。通常,将文件写入磁盘是导致最大开销的原因。

票数 1
EN

Stack Overflow用户

发布于 2018-06-20 08:19:11

这里有一种方法可以关闭任何已经打开的日志记录(在bro_init之前),而不必知道哪些流ID是相关的:

代码语言:javascript
复制
event bro_init()
{
   # We don't want any output other than from this script.
   for (id in Log::active_streams)
       Log::disable_stream(id);
}

这个结构让我在迭代的时候有点想修改一个表,但它似乎是有效的,我实际上找不到任何方法在不进行迭代的情况下偷看表中的一个键。我想有人可以这样写

代码语言:javascript
复制
event bro_init()
{
    while (|Log::active_streams|) {
        for (id in Log::active_streams) {
            Log::disable_stream(id);
            break;
        }
    }
}

但这太可怕了,除非我发现我必须这么做,否则我是不会用的。

票数 1
EN

Stack Overflow用户

发布于 2018-05-17 03:34:32

我用main.bro中的这行代码实现了这一点:

代码语言:javascript
复制
    Log::remove_filter(Conn::LOG, "default");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40721927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档