Skip to content

Commit

Permalink
Merge pull request #60 from bazay/patch-1
Browse files Browse the repository at this point in the history
Changes to datetime formatting
  • Loading branch information
hsbt authored Dec 9, 2021
2 parents 82a59c8 + 40adb64 commit 0fc272a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 5 deletions.
5 changes: 3 additions & 2 deletions lib/logger/formatter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
class Logger
# Default formatter for log messages.
class Formatter
Format = "%s, [%s#%d] %5s -- %s: %s\n"
Format = "%s, [%s #%d] %5s -- %s: %s\n"
DatetimeFormat = "%Y-%m-%dT%H:%M:%S.%6N"

attr_accessor :datetime_format

Expand All @@ -19,7 +20,7 @@ def call(severity, time, progname, msg)
private

def format_datetime(time)
time.strftime(@datetime_format || "%Y-%m-%dT%H:%M:%S.%6N ")
time.strftime(@datetime_format || DatetimeFormat)
end

def msg2str(msg)
Expand Down
35 changes: 35 additions & 0 deletions test/logger/test_formatter.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# coding: US-ASCII
# frozen_string_literal: false
require_relative 'helper'

class TestFormatter < Test::Unit::TestCase
def test_call
severity = 'INFO'
time = Time.now
progname = 'ruby'
msg = 'This is a test'
formatter = Logger::Formatter.new

result = formatter.call(severity, time, progname, msg)
time_matcher = /\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}/
matcher = /#{severity[0..0]}, \[#{time_matcher} #\d+\] #{severity} -- #{progname}: #{msg}\n/

assert_match(matcher, result)
end

class CustomFormatter < Logger::Formatter
def call(time)
format_datetime(time)
end
end

def test_format_datetime
time = Time.now
formatter = CustomFormatter.new

result = formatter.call(time)
matcher = /^\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}$/

assert_match(matcher, result)
end
end
6 changes: 3 additions & 3 deletions test/logger/test_logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def setup
class Log
attr_reader :label, :datetime, :pid, :severity, :progname, :msg
def initialize(line)
/\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ line
/\A(\w+), \[([^#]*) #(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ line
@label, @datetime, @pid, @severity, @progname, @msg = $1, $2, $3, $4, $5, $6
end
end
Expand Down Expand Up @@ -124,7 +124,7 @@ def test_datetime_format
dummy = STDERR
logger = Logger.new(dummy)
log = log_add(logger, INFO, "foo")
assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+ $/, log.datetime)
assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+$/, log.datetime)
logger.datetime_format = "%d%b%Y@%H:%M:%S"
log = log_add(logger, INFO, "foo")
assert_match(/^\d\d\w\w\w\d\d\d\d@\d\d:\d\d:\d\d$/, log.datetime)
Expand Down Expand Up @@ -203,7 +203,7 @@ def test_initialize_with_datetime_format
# default
logger = Logger.new(STDERR)
log = log_add(logger, INFO, "foo")
assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+ $/, log.datetime)
assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+$/, log.datetime)
# config
logger = Logger.new(STDERR, datetime_format: "%d%b%Y@%H:%M:%S")
log = log_add(logger, INFO, "foo")
Expand Down

0 comments on commit 0fc272a

Please sign in to comment.