1717end
1818
1919require "logger"
20- Rails . logger = ActiveSupport ::TaggedLogging . new ( ActiveSupport ::Logger . new ( STDOUT ) )
21- Rails . logger . level = Logger ::WARN
2220
2321module Typesense
2422 class NotConfigured < StandardError ; end
@@ -32,6 +30,37 @@ class NoBlockGiven < StandardError; end
3230
3331 class << self
3432 attr_reader :included_in
33+ attr_writer :logger
34+
35+ def logger
36+ return @logger if defined? ( @logger ) && @logger
37+
38+ rails_logger = ( defined? ( ::Rails ) && Rails . respond_to? ( :logger ) ) ? Rails . logger : nil
39+ @logger = rails_logger || Logger . new ( $stdout)
40+ end
41+
42+ def log ( severity , message = nil , &block )
43+ # If a min log level is configured, skip below-threshold messages
44+ min_level = log_level
45+ if min_level && !passes_min_level? ( severity , min_level )
46+ return
47+ end
48+
49+ sev_const = log_level_to_const ( severity )
50+ if logger . respond_to? ( :tagged )
51+ logger . tagged ( "Typesense" ) { logger . add ( sev_const , message , &block ) }
52+ else
53+ logger . add ( sev_const , message , &block )
54+ end
55+ end
56+
57+ def passes_min_level? ( severity , min_level )
58+ return true if min_level . nil?
59+
60+ sev_const = log_level_to_const ( severity )
61+ min_const = log_level_to_const ( min_level )
62+ sev_const >= min_const
63+ end
3564
3665 def included ( klass )
3766 @included_in ||= [ ]
@@ -269,7 +298,7 @@ def typesense_create_collection(collection_name, settings = nil)
269298 metadata ? { "metadata" => metadata } : { }
270299 )
271300 )
272- Rails . logger . debug "Collection '#{ collection_name } ' created!"
301+ Typesense . log ( : debug, "Collection '#{ collection_name } ' created!" )
273302
274303 typesense_multi_way_synonyms ( collection_name , multi_way_synonyms ) if multi_way_synonyms
275304
@@ -542,7 +571,7 @@ def typesense_index_objects_async(objects, batch_size = Typesense::IndexSettings
542571 end
543572 jsonl_object = documents . join ( "\n " )
544573 ImportJob . perform ( jsonl_object , collection_obj [ :alias_name ] , batch_size )
545- Rails . logger . debug "#{ objects . length } objects enqueued for import into #{ collection_obj [ :collection_name ] } "
574+ Typesense . log ( : debug, "#{ objects . length } objects enqueued for import into #{ collection_obj [ :collection_name ] } " )
546575 end
547576 nil
548577 end
@@ -557,7 +586,7 @@ def typesense_index_objects(objects, batch_size = Typesense::IndexSettings::DEFA
557586 end
558587 jsonl_object = documents . join ( "\n " )
559588 import_documents ( jsonl_object , "upsert" , collection_obj [ :alias_name ] , batch_size : batch_size )
560- Rails . logger . debug "#{ objects . length } objects upserted into #{ collection_obj [ :collection_name ] } !"
589+ Typesense . log ( : debug, "#{ objects . length } objects upserted into #{ collection_obj [ :collection_name ] } !" )
561590 end
562591 nil
563592 end
@@ -588,7 +617,7 @@ def typesense_index!(object)
588617 begin
589618 api_response = delete_document ( object_id , collection_obj [ :collection_name ] )
590619 rescue Typesense ::Error ::ObjectNotFound => e
591- Rails . logger . error "Object not found in index: #{ e . message } "
620+ Typesense . log ( : error, "Object not found in index: #{ e . message } " )
592621 end
593622 end
594623 end
@@ -611,9 +640,9 @@ def typesense_remove_from_index!(object)
611640 begin
612641 delete_document ( object_id , collection_obj [ :alias_name ] )
613642 rescue Typesense ::Error ::ObjectNotFound => e
614- Rails . logger . error "Object #{ object_id } could not be removed from #{ collection_obj [ :collection_name ] } collection! Use reindex to update the collection."
643+ Typesense . log ( : error, "Object #{ object_id } could not be removed from #{ collection_obj [ :collection_name ] } collection! Use reindex to update the collection." )
615644 end
616- Rails . logger . debug "Removed document with object id '#{ object_id } ' from #{ collection_obj [ :collection_name ] } "
645+ Typesense . log ( : debug, "Removed document with object id '#{ object_id } ' from #{ collection_obj [ :collection_name ] } " )
617646 end
618647 nil
619648 end
@@ -626,7 +655,7 @@ def typesense_clear_index!
626655 collection_obj = typesense_ensure_init ( options , settings , false )
627656
628657 delete_collection ( collection_obj [ :alias_name ] )
629- Rails . logger . debug "Deleted #{ collection_obj [ :alias_name ] } collection!"
658+ Typesense . log ( : debug, "Deleted #{ collection_obj [ :alias_name ] } collection!" )
630659 @typesense_indexes [ settings ] = nil
631660 end
632661 nil
0 commit comments