diff --git a/app/models/jobs/http_post.rb b/app/models/jobs/http_post.rb
index 319276d41e404c0a26d782897255f661ad01b480..5a63a419846e241bc61518be9daa0c4f61025ac7 100644
--- a/app/models/jobs/http_post.rb
+++ b/app/models/jobs/http_post.rb
@@ -1,5 +1,6 @@
 module Jobs
-  class HttpPost 
+  class HttpPost
+    extend ResqueJobLogging
     @queue = :http
 
     def self.perform(url, body, tries_remaining)
diff --git a/app/models/jobs/invite_user.rb b/app/models/jobs/invite_user.rb
index 4629f4b902e0016b7f5ca2ae4126c5af8a43b766..c9ec85476a7fb0f95e1bc7f61b84409dae9177b8 100644
--- a/app/models/jobs/invite_user.rb
+++ b/app/models/jobs/invite_user.rb
@@ -1,5 +1,6 @@
 module Jobs
   class InviteUser
+    extend ResqueJobLogging
     @queue = :mail
     def self.perform(sender_id, email, aspect_id, invite_message)
       user = User.find(sender_id)
diff --git a/app/models/jobs/mail_request_acceptance.rb b/app/models/jobs/mail_request_acceptance.rb
index 7cdeb6ae0a5b4970d772f3f044f52ac3f3df5dad..d0d07775a8cf986d9d275c51b16490b4c5a505e0 100644
--- a/app/models/jobs/mail_request_acceptance.rb
+++ b/app/models/jobs/mail_request_acceptance.rb
@@ -1,5 +1,6 @@
 module Jobs
   class MailRequestAcceptance
+    extend ResqueJobLogging
     @queue = :mail
     def self.perform(recipient_id, sender_id)
       Notifier.request_accepted(recipient_id, sender_id).deliver
diff --git a/app/models/jobs/mail_request_received.rb b/app/models/jobs/mail_request_received.rb
index b57e16fd6e33ad22521bdcfad7f4657eebd00047..0c2d66095e276409ca663230f56369bbdf8b0d7d 100644
--- a/app/models/jobs/mail_request_received.rb
+++ b/app/models/jobs/mail_request_received.rb
@@ -1,5 +1,6 @@
 module Jobs
   class MailRequestReceived
+    extend ResqueJobLogging
     @queue = :mail
     def self.perform(recipient_id, sender_id)
       Notifier.new_request(recipient_id, sender_id).deliver
diff --git a/app/models/jobs/post_to_services.rb b/app/models/jobs/post_to_services.rb
index b94e16cb595be449986bdf128c04e8d44a9ffd26..e29b1d609df1c15b7f3269a511d4bb32abb22e24 100644
--- a/app/models/jobs/post_to_services.rb
+++ b/app/models/jobs/post_to_services.rb
@@ -1,5 +1,6 @@
 module Jobs
-  class PostToServices 
+  class PostToServices
+    extend ResqueJobLogging
     @queue = :http_service
     def self.perform(user_id, post_id, url)
       user = User.find_by_id(user_id)
diff --git a/app/models/jobs/receive.rb b/app/models/jobs/receive.rb
index a37953498d64bc387d89b2577faed649a5d79648..d653f175a751e7ce7801f3648370ac4671ff0c96 100644
--- a/app/models/jobs/receive.rb
+++ b/app/models/jobs/receive.rb
@@ -1,5 +1,6 @@
 module Jobs
   class Receive
+    extend ResqueJobLogging
     @queue = :receive
     def self.perform(user_id, xml, salmon_author_id)
       user = User.find(user_id)
diff --git a/app/models/jobs/receive_local.rb b/app/models/jobs/receive_local.rb
index ebe84bbdc414e65e8664d12ccace01c93cda902f..d976d629f6a4ee9d9d258e216697e4510bab13a1 100644
--- a/app/models/jobs/receive_local.rb
+++ b/app/models/jobs/receive_local.rb
@@ -1,5 +1,6 @@
 module Jobs
   class ReceiveLocal
+    extend ResqueJobLogging
     @queue = :receive_local
     def self.perform(user_id, person_id, object_type, object_id)
       user = User.find(user_id)
diff --git a/app/models/jobs/receive_salmon.rb b/app/models/jobs/receive_salmon.rb
index b529bd7bef099b6619a56dece094578d446ad2ba..7fad0cc3ccf93356a6aba67861e718b46ef893ad 100644
--- a/app/models/jobs/receive_salmon.rb
+++ b/app/models/jobs/receive_salmon.rb
@@ -1,5 +1,6 @@
 module Jobs
   class ReceiveSalmon
+    extend ResqueJobLogging
     @queue = :receive_salmon
     def self.perform(user_id, xml)
       user = User.find(user_id)
diff --git a/app/models/jobs/socket_webfinger.rb b/app/models/jobs/socket_webfinger.rb
index edad564514e7c2c8365b019a5ed0ad79881a4ebb..633f7b8e68bbd633d0b47e33dc90795cb755205a 100644
--- a/app/models/jobs/socket_webfinger.rb
+++ b/app/models/jobs/socket_webfinger.rb
@@ -1,5 +1,6 @@
 module Jobs
   class SocketWebfinger
+    extend ResqueJobLogging
     @queue = :socket_webfinger
     def self.perform(user_id, account, opts={})
       finger = Webfinger.new(account)
@@ -7,7 +8,7 @@ module Jobs
         result = finger.fetch
         result.socket_to_uid(user_id, opts)
       rescue
-        Diaspora::WebSocket.queue_to_user(user_id, 
+        Diaspora::WebSocket.queue_to_user(user_id,
           {:class => 'people',
            :status => 'fail',
            :query => account,
diff --git a/lib/resque_job_logging.rb b/lib/resque_job_logging.rb
new file mode 100644
index 0000000000000000000000000000000000000000..fe6343139e3c0a3ac01258bfa6189df313aa8dd3
--- /dev/null
+++ b/lib/resque_job_logging.rb
@@ -0,0 +1,24 @@
+module ResqueJobLogging
+  def around_perform_log_job(*args)
+    log_string = "event=resque_job job=#{self} "
+    error = nil
+    time = Benchmark.realtime{
+      begin
+        yield
+      rescue Exception => e
+        error = e
+      end
+    }*1000
+    if error
+      log_string += "status=error error=\"#{error}\" "
+    else
+      log_string += "status=complete "
+    end
+    log_string += "ms=#{time} "
+    arg_count = 1
+    args.each{|arg| log_string += "arg#{arg_count}=\"#{arg[0..30]}\" "}
+
+    Rails.logger.info(log_string)
+    raise error if error
+  end
+end