Module: Applicaster::Logger

Defined in:
lib/applicaster/logger.rb,
lib/applicaster/logger/rack.rb,
lib/applicaster/logger/railtie.rb,
lib/applicaster/logger/sidekiq.rb,
lib/applicaster/logger/version.rb,
lib/applicaster/logger/formatter.rb,
lib/applicaster/logger/thread_context.rb,
lib/applicaster/logger/lograge/formatter.rb,
lib/applicaster/logger/rack/request_data.rb,
lib/applicaster/logger/sidekiq/job_logger.rb,
lib/applicaster/logger/sidekiq/middleware.rb,
lib/applicaster/logger/rack/thread_context.rb,
lib/applicaster/logger/sidekiq/common_events.rb,
lib/applicaster/logger/sidekiq/thread_context.rb,
lib/applicaster/logger/sidekiq/exception_logger.rb

Defined Under Namespace

Modules: Lograge, Rack, Sidekiq, ThreadContext Classes: Formatter, Railtie

Constant Summary collapse

VERSION =
"0.8.4"
HOST =
::Socket.gethostname

Class Method Summary collapse

Class Method Details

.truncate_bytes(text, truncate_at, omission: "...") ⇒ Object

Truncates text to at most bytesize bytes in length without breaking string encoding by splitting multibyte characters or breaking grapheme clusters (“perceptual characters”) by truncating at combining characters. Code taken from activesupport/lib/active_support/core_ext/string/filters.rb



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/applicaster/logger.rb', line 16

def self.truncate_bytes(text, truncate_at, omission: "...")
  omission ||= ""

  case
  when text.bytesize <= truncate_at
    text.dup
  when omission.bytesize > truncate_at
    raise ArgumentError, "Omission #{omission.inspect} is #{omission.bytesize}, larger than the truncation length of #{truncate_at} bytes"
  when omission.bytesize == truncate_at
    omission.dup
  else
    text.class.new.tap do |cut|
      cut_at = truncate_at - omission.bytesize

      text.scan(/\X/) do |grapheme|
        if cut.bytesize + grapheme.bytesize <= cut_at
          cut << grapheme
        else
          break
        end
      end

      cut << omission
    end
  end
end