From 40b09144c62a0fc56b83328f1e53f5709facf235 Mon Sep 17 00:00:00 2001 From: Robert Postill Date: Tue, 8 Jun 2010 20:02:16 +0000 Subject: [PATCH] Expanded on the log renderer --- lib/clarity/renderers/log_renderer.rb | 54 +++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/lib/clarity/renderers/log_renderer.rb b/lib/clarity/renderers/log_renderer.rb index d70eea2..5f4c232 100644 --- a/lib/clarity/renderers/log_renderer.rb +++ b/lib/clarity/renderers/log_renderer.rb @@ -6,6 +6,16 @@ class LogRenderer # Thank you to http://daringfireball.net/2009/11/liberal_regex_for_matching_urls # UrlParser = %r{\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))} + + IpParser = %r{\b(\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3})} + DateParser = %r{\[(\d{2}\/\w{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2}\s\+\d{4})\]|^(\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2})} + BrowserDetails = %r{;\s"(.+)"$} + EOLStatus = %r{\(.+\)\s?$} + HttpVerbs = %r{(GET|POST|PUT|DELETE|HEAD)} + Email = %r{(\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b)} + Emailstatus = %r{(status=\w+)} + KeyValue = %r("\w+"=>(?:"[^&]+?"|[0-9\.]+|true|false|nil|[A-Z].+?\s\d{4})(?:,|})) + Prefix = "" Suffix = "
\n" @@ -17,7 +27,46 @@ def render(line = {}) output.gsub!(UrlParser) do |match| html_link(match) end - + + # Catch for key and value + output.gsub!(KeyValue) do |match| + (key, value) = match.split("=>") + "#{key}=>#{value}" + end + # Formats IPs + output.gsub!(IpParser) do |match| + "#{match}" + end + + # Format Standard unix log types formats + output.gsub!(DateParser) do |match| + "#{match}" + end + # Format end of line status messages in mail.log + output.gsub!(EOLStatus) do |match| + "#{match}" + end + + # Format Apache Browser Specifics + output.gsub!(BrowserDetails) do |match| + "#{match}" + end + + # Format HTTP Verbs + output.gsub!(HttpVerbs) do |match| + "#{match}" + end + + # Format Email addresses + output.gsub!(Email) do |match| + "#{match}" + end + + # Format Email status messages + output.gsub!(Emailstatus) do |match| + "#{match}" + end + # Return with formatting "#{Prefix}#{output}#{Suffix}" end @@ -32,5 +81,4 @@ def html_link(url) uri = URI.parse(url) rescue url "#{url}" end - -end \ No newline at end of file +end