Add Loggability for nicer debugging output.
FossilOrigin-Name: ff761d0e8e8638b1f4d98d8d913d99591d83da0167d75b28f1bd186e1907ee47
This commit is contained in:
parent
87f8430048
commit
6cc96d8fae
5 changed files with 82 additions and 0 deletions
|
|
@ -6,6 +6,60 @@ VALUE rmdbx_mMDBX;
|
||||||
VALUE rmdbx_eDatabaseError;
|
VALUE rmdbx_eDatabaseError;
|
||||||
VALUE rmdbx_eRollback;
|
VALUE rmdbx_eRollback;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Log a message to the given +context+ object's logger.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
#ifdef HAVE_STDARG_PROTOTYPES
|
||||||
|
rmdbx_log_obj( VALUE context, const char *level, const char *fmt, ... )
|
||||||
|
#else
|
||||||
|
rmdbx_log_obj( VALUE context, const char *level, const char *fmt, va_dcl )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
char buf[BUFSIZ];
|
||||||
|
va_list args;
|
||||||
|
VALUE logger = Qnil;
|
||||||
|
VALUE message = Qnil;
|
||||||
|
|
||||||
|
va_init_list( args, fmt );
|
||||||
|
vsnprintf( buf, BUFSIZ, fmt, args );
|
||||||
|
message = rb_str_new2( buf );
|
||||||
|
|
||||||
|
logger = rb_funcall( context, rb_intern("log"), 0 );
|
||||||
|
rb_funcall( logger, rb_intern(level), 1, message );
|
||||||
|
|
||||||
|
va_end( args );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Log a message to the global logger.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
#ifdef HAVE_STDARG_PROTOTYPES
|
||||||
|
rmdbx_log( const char *level, const char *fmt, ... )
|
||||||
|
#else
|
||||||
|
rmdbx_log( const char *level, const char *fmt, va_dcl )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
char buf[BUFSIZ];
|
||||||
|
va_list args;
|
||||||
|
VALUE logger = Qnil;
|
||||||
|
VALUE message = Qnil;
|
||||||
|
|
||||||
|
va_init_list( args, fmt );
|
||||||
|
vsnprintf( buf, BUFSIZ, fmt, args );
|
||||||
|
message = rb_str_new2( buf );
|
||||||
|
|
||||||
|
logger = rb_funcall( rmdbx_mMDBX, rb_intern("logger"), 0 );
|
||||||
|
rb_funcall( logger, rb_intern(level), 1, message );
|
||||||
|
|
||||||
|
va_end( args );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MDBX initialization
|
* MDBX initialization
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,22 @@ typedef struct rmdbx_db rmdbx_db_t;
|
||||||
static const rb_data_type_t rmdbx_db_data;
|
static const rb_data_type_t rmdbx_db_data;
|
||||||
|
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------
|
||||||
|
* Logging
|
||||||
|
* ------------------------------------------------------------ */
|
||||||
|
#ifdef HAVE_STDARG_PROTOTYPES
|
||||||
|
#include <stdarg.h>
|
||||||
|
#define va_init_list(a,b) va_start(a,b)
|
||||||
|
void rmdbx_log_obj( VALUE, const char *, const char *, ... );
|
||||||
|
void rmdbx_log( const char *, const char *, ... );
|
||||||
|
#else
|
||||||
|
#include <varargs.h>
|
||||||
|
#define va_init_list(a,b) va_start(a)
|
||||||
|
void rmdbx_log_obj( VALUE, const char *, const char *, va_dcl );
|
||||||
|
void rmdbx_log( const char *, const char *, va_dcl );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------
|
/* ------------------------------------------------------------
|
||||||
* Globals
|
* Globals
|
||||||
* ------------------------------------------------------------ */
|
* ------------------------------------------------------------ */
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
source "https://rubygems.org/"
|
source "https://rubygems.org/"
|
||||||
|
|
||||||
|
gem 'loggability', '~> 0.17'
|
||||||
|
|
||||||
group( :development ) do
|
group( :development ) do
|
||||||
gem 'pry', '~> 0.13'
|
gem 'pry', '~> 0.13'
|
||||||
gem 'rake', '~> 13.0'
|
gem 'rake', '~> 13.0'
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,22 @@
|
||||||
# vim: set nosta noet ts=4 sw=4 ft=ruby:
|
# vim: set nosta noet ts=4 sw=4 ft=ruby:
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
|
require 'loggability'
|
||||||
|
|
||||||
require 'mdbx_ext'
|
require 'mdbx_ext'
|
||||||
|
|
||||||
|
|
||||||
# Top level namespace for MDBX.
|
# Top level namespace for MDBX.
|
||||||
#
|
#
|
||||||
module MDBX
|
module MDBX
|
||||||
|
extend Loggability
|
||||||
|
|
||||||
# The version of this gem.
|
# The version of this gem.
|
||||||
VERSION = '0.3.2'
|
VERSION = '0.3.2'
|
||||||
|
|
||||||
|
|
||||||
|
log_as :mdbx
|
||||||
|
|
||||||
|
|
||||||
end # module MDBX
|
end # module MDBX
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@ require 'mdbx' unless defined?( MDBX )
|
||||||
# The primary class for interacting with an MDBX database.
|
# The primary class for interacting with an MDBX database.
|
||||||
#
|
#
|
||||||
class MDBX::Database
|
class MDBX::Database
|
||||||
|
extend Loggability
|
||||||
|
|
||||||
|
log_to :mdbx
|
||||||
|
|
||||||
### call-seq:
|
### call-seq:
|
||||||
### MDBX::Database.open( path ) => db
|
### MDBX::Database.open( path ) => db
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue