Class: Groonga::Logger
- Inherits:
-
Object
- Object
- Groonga::Logger
- Defined in:
- ext/rb-grn-logger.c,
ext/rb-grn-logger.c
Overview
groongaから出力されるログを記録するためのクラス。
Class Method Summary collapse
-
.Groonga::Logger.register(options = {}) ⇒ Object
groongaがログを出力する度に呼び出されるブロックを登録す る。.
Instance Method Summary collapse
- #initialize ⇒ Object constructor
Constructor Details
#initialize ⇒ Object
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
# File 'ext/rb-grn-logger.c', line 202
static VALUE
rb_grn_logger_initialize (int argc, VALUE *argv, VALUE self)
{
rb_grn_logger_info_wrapper *wrapper;
grn_logger_info *logger;
grn_log_level level;
int flags = 0;
VALUE options, rb_level, rb_time, rb_title, rb_message, rb_location;
VALUE rb_handler;
rb_scan_args(argc, argv, "01&", &options, &rb_handler);
rb_grn_scan_options(options,
"level", &rb_level,
"time", &rb_time,
"title", &rb_title,
"message", &rb_message,
"location", &rb_location,
NULL);
level = RVAL2GRNLOGLEVEL(rb_level);
if (NIL_P(rb_time) || RVAL2CBOOL(rb_time))
flags |= GRN_LOG_TIME;
if (NIL_P(rb_title) || RVAL2CBOOL(rb_title))
flags |= GRN_LOG_TITLE;
if (NIL_P(rb_message) || RVAL2CBOOL(rb_message))
flags |= GRN_LOG_MESSAGE;
if (NIL_P(rb_location) || RVAL2CBOOL(rb_location))
flags |= GRN_LOG_LOCATION;
wrapper = ALLOC(rb_grn_logger_info_wrapper);
logger = ALLOC(grn_logger_info);
wrapper->logger = logger;
DATA_PTR(self) = wrapper;
logger->max_level = level;
logger->flags = flags;
rb_grn_logger_set_handler(self, rb_handler);
return Qnil;
}
|
Class Method Details
.Groonga::Logger.register(options = {}) ⇒ Object
groongaがログを出力する度に呼び出されるブロックを登録す る。
ブロックに渡されてくる引数はlevel, time, title, message, locationの5つで、levelはSymbol、それ以外は 全て文字列で渡される。その4つについてはoptionsでfalse
を指定することでブロックに渡さないようにすることができ、 その場合は空文字列が実際には渡される。
optionsに指定可能な値は以下の通り。
:level
-
ログのレベルを
:none
,:emergency
,:alert
,:critical
,:error
,:warning
,:notice
,:info
,:debug
,:dump
のいずれかで指定する。それより重要度が 低いログはブロックに渡されなくなる。デフォルトでは:notice
。 :time
-
ログが出力された時間をブロックに渡したいなら
true
を指 定する。デフォルトでは渡す。 :title
-
ログのタイトルをブロックに渡したいなら
true
を指定す る。デフォルトでは渡す。(FIXME: groongaで実装されてい ない?) :message
-
ログのメッセージをブロックに渡したいなら
true
を指定す る。デフォルトでは渡す。 :location
-
ログの発生元のプロセスIDとgroongaのソースコードのファイ ル名、行番号、関数名をブロックに渡したいなら
true
を指 定する。デフォルトでは渡す。
286 287 288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'ext/rb-grn-logger.c', line 286
static VALUE
rb_grn_logger_s_register (int argc, VALUE *argv, VALUE klass)
{
VALUE logger;
grn_rc rc;
logger = rb_funcall2(klass, rb_intern("new"), argc, argv);
rb_grn_logger_set_handler(logger, rb_block_proc());
rc = grn_logger_info_set(NULL, RVAL2GRNLOGGER(logger));
rb_grn_rc_check(rc, logger);
rb_cv_set(klass, "@@current_logger", logger);
return Qnil;
}
|