Thanks a lot Jeff,

Yeah I saw it works, that's why I wondered about the linked post..

Anyway, I'm just trying to basically get emails that contain the 
exception/error message in the subject so it's easier to sort
if there are many error mails.

Of course the rescue_from method only targets one specific case - the one 
where I get a rails exception.
But I think I cannot do it by monkey patching log4r as rails already sends 
a complete (and formatted) string to
log.error making it hard to extract the relevant message.

I'll see how I can use it, but I think I can get there somehow :)

Thank a lot for your suggestion!
Christoph

On Tuesday, 12 November 2013 21:25:30 UTC+1, Jeff Lewis wrote:
>
> Hi Christoph,
>
> My (simple) example was just trying to give you an idea of how to do what 
> you were asking using rescue_from.
>
> And note that the log does show that the re-raising worked as expected, 
> where we did something with the caught exception first (ie write a debug 
> TEST line to the log) before then re-raising it and letting the rails env 
> stack handle it (ie log shows the stacktrace including the orig line where 
> the bug is in the code, ...).
>
> As for "a better way", it always depends on what you're ultimately trying 
> to accomplish and the tradeoffs for getting there.
>
> But if you really did want to use rescue_from for any/all 
> exceptions/errors that could occur, then at a minimum you're going to want 
> to make sure that what you do with that caught exception (ie your 
> Log4r::MDC... call) doesn't itself result in any exceptions/errors.  One 
> way would be to wrap that work in a begin ... rescue Exception => e2 ... 
> end ... before then re-raising the originally caught exception.
>
> Jeff
>
>
> On Tuesday, November 12, 2013 11:26:47 AM UTC-8, sol wrote:
>>
>> Hi Jeff, thanks for your reply!
>>
>> I found the article here:
>>
>> http://www.simonecarletti.com/blog/2009/11/re-raise-a-ruby-exception-in-a-rails-rescue_from-statement/
>>
>> And he mentions that re-raising does not work since rails won't catch it 
>> anymore..
>> has this been changed since?
>>
>> I generally thought there might be a better way, as usually re-raising 
>> exceptions is considered to be bad :)
>>
>> Thanks a lot,
>> Christoph
>>
>> On Tuesday, 12 November 2013 19:07:00 UTC+1, Jeff Lewis wrote:
>>>
>>> Hi Christoph,
>>>
>>> All you need to do is re-raise the exception after you're done using it 
>>> in your rescue_from, so something along the lines of:
>>>
>>> $ cat ./app/controllers/foo_controller.rb
>>> ...
>>>   rescue_from Exception do |e|
>>>     # do something with e before re-raising it ...
>>>     Rails.logger.debug("TEST: before re-raising ... e=#{e.inspect}")
>>>     raise e
>>>   end
>>> ...
>>>
>>>   def testfoo
>>>     x = 'bar' if 1/0
>>>     ....
>>>   end
>>> ....
>>>
>>> $ curl -sLi http://foo.localhost/testfoo
>>> ...
>>>
>>> $ cat ./log/development.log
>>> ...
>>> [c55f5] TEST: before re-raising ... e=#<ZeroDivisionError: divided by 0>
>>> [c55f5] Completed 500 Internal Server Error in 17ms
>>> [c55f5]
>>> ZeroDivisionError (divided by 0):
>>>   app/controllers/foo_controller.rb:89:in `/'
>>>   app/controllers/foo_controller.rb:89:in `testfoo'
>>> ...
>>>
>>> Jeff
>>>
>>> On Tuesday, November 12, 2013 6:40:12 AM UTC-8, sol wrote:
>>>>
>>>> Hi there,
>>>>
>>>> I'm using Log4r in my rails projects. On log.error an email is sent 
>>>> using the EmailOutputter.
>>>> I know changed the EmailOutputter to include a global var in the 
>>>> subject (MDC) since the subject is normally static.
>>>>
>>>> I want to set this var to the exception message, so it is sent as the 
>>>> subject.
>>>>
>>>> Can anyone tell me how to do this in rails?
>>>>
>>>> Basically:
>>>>
>>>> raise e or some other cause
>>>>> -> Log4r::MDC.put('subject', e.message)
>>>>> continue with the exception
>>>>
>>>>
>>>> I found *rescue_from* but it just gives it to the handler and then 
>>>> stops.
>>>>
>>>> Thanks a lot,
>>>> Christoph
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/cd998fe6-eaa4-4bc4-a486-0336d68c71b2%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to