Отстойно, что вы в основном застряли с передачей строк в elmah, но это то, на чем основаны исключения, когда вы добираетесь до сути (по крайней мере, как большинство программистов справляются с ними).
Что я делаю, это просто создаю пользовательские сообщения, которые имитируют объект, вроде:
Произошла ошибка в Class.MethodName при установке клиента и т. Д., А затем введите существующее исключение.