Commit 3c9a6546a7c606cf815b758055dc6563a1c9d02a:
treat log as utf-8, recover from individual errors
Branch: refs/heads/master
Author: Sam Ruby <[email protected]>
Committer: Sam Ruby <[email protected]>
Pusher: rubys <[email protected]>
------------------------------------------------------------
www/status/monitors/public_json.rb | ++++++++ -----
------------------------------------------------------------
52 changes: 32 additions, 20 deletions.
------------------------------------------------------------
diff --git a/www/status/monitors/public_json.rb
b/www/status/monitors/public_json.rb
index 0102f23..a9858e1 100644
--- a/www/status/monitors/public_json.rb
+++ b/www/status/monitors/public_json.rb
@@ -8,27 +8,39 @@ def Monitor.public_json(previous_status)
status = {}
Dir[logs].each do |log|
- name = File.basename(log).sub('public-', '')
-
- status[name] = {
- href: "../logs/#{File.basename(log)}",
- mtime: File.mtime(log)
- }
-
- contents = File.read(log)
-
- # Ignore Wunderbar logging for normal messages (TODO ignore _WARN ?)
- contents.sub! /^(_INFO|_DEBUG) .*\n+/, ''
-
- # diff -u output:
- if contents.sub! /^--- .*?\n(\n|\Z)/m, ''
- status[name].merge! level: 'info', title: 'updated'
+ begin
+ name = File.basename(log).sub('public-', '')
+
+ status[name] = {
+ href: "../logs/#{File.basename(log)}",
+ mtime: File.mtime(log)
+ }
+
+ contents = File.read(log, encoding: Encoding::UTF_8)
+
+ # Ignore Wunderbar logging for normal messages (TODO ignore _WARN ?)
+ contents.sub! /^(_INFO|_DEBUG) .*\n+/, ''
+
+ # diff -u output:
+ if contents.sub! /^--- .*?\n(\n|\Z)/m, ''
+ status[name].merge! level: 'info', title: 'updated'
+ end
+
+ unless contents.empty?
+ status[name].merge! level: 'danger', data: contents.split("\n")
+ end
+ rescue Exception => e
+ status[name] = {
+ level: 'danger',
+ data: {
+ exception: {
+ level: 'danger',
+ text: e.inspect,
+ data: e.backtrace
+ }
+ }
+ }
end
-
- unless contents.empty?
- status[name].merge! level: 'danger', data: contents.split("\n")
- end
-
end
{data: status}