summaryrefslogtreecommitdiff
path: root/lib/logger/formatter.rb
diff options
context:
space:
mode:
authorColby Swandale <me@colby.fyi>2018-12-12 14:08:35 +1100
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2019-07-15 14:43:07 +0900
commitbbe157f34046ec9ef81e6ad9ed37c86a0d9155e4 (patch)
tree795ef0226ac95ede84fcee787dbe6cec19418463 /lib/logger/formatter.rb
parent136196785b10f7cffa1e4d557bc3bcc0e863813a (diff)
[ruby/logger] split logger classes/modules into separate files
https://github.com/ruby/logger/commit/f10ce9fff2
Diffstat (limited to 'lib/logger/formatter.rb')
-rw-r--r--lib/logger/formatter.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/logger/formatter.rb b/lib/logger/formatter.rb
new file mode 100644
index 0000000000..13cb1a8390
--- /dev/null
+++ b/lib/logger/formatter.rb
@@ -0,0 +1,35 @@
+class Logger
+ # Default formatter for log messages.
+ class Formatter
+ Format = "%s, [%s#%d] %5s -- %s: %s\n".freeze
+
+ attr_accessor :datetime_format
+
+ def initialize
+ @datetime_format = nil
+ end
+
+ def call(severity, time, progname, msg)
+ Format % [severity[0..0], format_datetime(time), $$, severity, progname,
+ msg2str(msg)]
+ end
+
+ private
+
+ def format_datetime(time)
+ time.strftime(@datetime_format || "%Y-%m-%dT%H:%M:%S.%6N ".freeze)
+ end
+
+ def msg2str(msg)
+ case msg
+ when ::String
+ msg
+ when ::Exception
+ "#{ msg.message } (#{ msg.class })\n" <<
+ (msg.backtrace || []).join("\n")
+ else
+ msg.inspect
+ end
+ end
+ end
+end