Kouhei Sutou
kou****@clear*****
2012年 10月 1日 (月) 11:32:28 JST
須藤です。 In <CAEb3frrB_fc50S****@mail*****> "[groonga-dev,01044] mroonga(groonga)のログレベルをNONEにしてもfilter結果件数がgroonga.logに出力されてしまう" on Mon, 1 Oct 2012 11:09:09 +0900, "akiyan.com" <akiya****@gmail*****> wrote: > mroonga 2.0.6をUbuntuやCentOSなど複数の環境で使用しています。 おぉ、ありがとうございます! > mroongaをラッパーモードで使用していいまして、 > mroonga_log_file(groonga.log)に出力される filter(..) のログを止めようとしました。 > > しかし、mroonga_log_levelをNONEにしても止まらず、ソースコードを追跡したところ > groongaのLAPマクロによってログレベルがNONEでも出力されるようになっていました。 > > https://github.com/groonga/groonga/blob/master/plugins/suggest/suggest.c > LAP(":", "filter(%d)", grn_table_size(ctx, res)); > > https://github.com/groonga/groonga/blob/master/lib/ctx.h > #define LAP(prefix,format,...) do {\ > uint64_t et;\ > grn_timeval tv;\ > grn_timeval_now(ctx, &tv);\ > et = (uint64_t)(tv.tv_sec - ctx->impl->tv.tv_sec) * GRN_TIME_NSEC_PER_SEC\ > + (tv.tv_nsec - ctx->impl->tv.tv_nsec);\ > GRN_LOG(ctx, GRN_LOG_NONE, "%p|" prefix "%015" GRN_FMT_INT64U " " format,\ > ctx, et, __VA_ARGS__);\ > } while (0) > > 推測なのですが、LAPマクロは名前の通りタイムラップを測定する意図で使われているようなので、 > LAPマクロのログレベルはNONEではなくそこそこ高くても大丈夫なように思うのですが、、、 > > filter結果はMATCH AGAINSTを使用しただけで出力され、 > アクセスが多いとログが膨大になってしまいうので、ログの運用に悩んでいます。 なるほど! 確認してみました。 groongaでは「groongaそのもののログ」と「クエリのログ」で出力 を分けているのですが、mroongaではどちらも一緒にしていたのが 原因でした。(groongaでは「クエリのログ」だけ無効にするとい うことができる。) mroongaでもログの出力をわけられるようにする、などで 「filter(...)」というログの出力を制御できるようにします。 制御できるようにしたら報告します! > パッチをあててしまえばよいとは思うのですが、 > そもそもどうなんだろうと疑問に思いましたので、こちらに投げさせていただきました。 ありがとうございます。 これからも、疑問に思ったことを聞いてもらえると、より使いやす いようにするにはどうしればよいかを検討できるのでうれしいです! -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/