summaryrefslogtreecommitdiff
path: root/lib/chef/log/formatter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/log/formatter.rb')
-rw-r--r--lib/chef/log/formatter.rb52
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/chef/log/formatter.rb b/lib/chef/log/formatter.rb
new file mode 100644
index 0000000000..d177060d97
--- /dev/null
+++ b/lib/chef/log/formatter.rb
@@ -0,0 +1,52 @@
+#
+# Chef::Log::Formatter
+#
+# A custom Logger::Formatter implementation for Chef.
+#
+# Author:: Adam Jacob (<adam@hjksolutions.com>)
+# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
+# License:: GNU General Public License version 2 or later
+#
+# This program and entire repository is free software; you can
+# redistribute it and/or modify it under the terms of the GNU
+# General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+require 'logger'
+require 'time'
+
+class Chef
+ class Log
+ class Formatter < Logger::Formatter
+ # Prints a log message as '[time] severity: message'
+ def call(severity, time, progname, msg)
+ sprintf("[%s] %s: %s\n", time.rfc2822(), severity, msg2str(msg))
+ end
+
+ # Converts some argument to a Logger.severity() call to a string. Regular strings pass through like
+ # normal, Exceptions get formatted as "message (class)\nbacktrace", and other random stuff gets
+ # put through "object.inspect"
+ 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
+end \ No newline at end of file