|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Добрый день! У меня есть вот такой метод для записи в лог: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
Сейчас вызов метода я произвожу вот так: Код: c# 1.
Вопрос: Можно ли как-то получение имени предыдущего метода, который вызвал запись в лог, запихнуть в сам метод записи в лог, чтобы каждый раз не указывать MethodBase.GetCurrentMethod().Name? Так же здоровая критика сего творения приветствуется! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 15:12 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Алексей Ку.Так же здоровая критика сего творения приветствуется! Не изобретать велосипед, и использовать NLog. Там всё это давно уже реализовано. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 15:46 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Ну а если таки велосипед, то: http://msdn.microsoft.com/ru-ru/library/system.diagnostics.stacktrace.getframe(v=vs.110).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 16:05 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Алексей Ку., в .NET 4.5 добавили атрибут CallerMemberName специально для этой цели. Если у тебя .NET 4.0, то его тоже можно использовать через Microsoft BCL Portability Pack . Убедись только что он срабатывает. На stackoverflow пишут что для его работы требуется обновление KB2468871 . ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 16:20 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
StackTrace Class в помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 16:43 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Алексей Ку. string _addition = DateTime.Now.ToString("[dd.MM.yy] [hh:mm:ss] - [ERROR] "); _addition = _addition.PadRight(32); if (methodname != null) _addition += "MethodName:[" + methodname + "] "; if (message != null) _addition += "Message:[" + message + "] "; string _message = _addition + "ExMessage: [" + ex.Message + "]" + Environment.NewLine + "ExStackTrace: [" + ex.StackTrace + "]" + Environment.NewLine; Все в StringBuilder запихнуть catch (Exception exx) { throw exx; WriteToLog(exx, MethodBase.GetCurrentMethod().Name, "RECURSIVE FATAL!"); } ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 16:44 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Алексей Ку. Код: c# 1. 2. 3. 4. 5.
Это бессмысленная конструкция. Код после throw никогда не выполнится. Убери try/catch вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 16:59 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Кстати говоря в C# планируют добавить ключевое слово nameof которое будет помогать в подобных ситуациях - The New and Improved C# 6.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 18:48 |
|
Получение имени предыдущего метода
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Последовал совету и разобрался с NLog. Весчь! Очень крутая шутка! Спасибо за совет! Все остальные рекомендации даже не проверял. Всё для меня решил Nlog. Но всем огромное спасибо, что откликнулись! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2014, 12:33 |
|
|
start [/forum/topic.php?fid=20&msg=38763627&tid=1402096]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 149ms |
0 / 0 |