metaclass: (Default)
[personal profile] metaclass
А вот почему ни в одном имеющемся под руками языке программирования нет функции "компилятор сам подставляет в вызов логгера имя функции, из которой его вызвали"?
Я понимаю, в log4net я могу подключить вывод фреймов стека, прямо в конфиге, но они достаточно знатно все тормозят в рантайме, а так бы на этапе компиляции подставлять имена функций в виде строковых констант.
В препроцессорах C и C++ есть __LINE__ и __FILE__, а больше я ничего подходящего вроде и не видел.

Date: 2012-08-28 12:13 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Только это должно быть не в языке, а в средствах интроспекции. Что-то типа
var caller = currentThread.Reflection.GetStack().GetItem(1);
log(caller.FunctionName + " " + caller.LineNumber);

Date: 2012-08-28 12:17 pm (UTC)
From: [identity profile] jakobz.livejournal.com
О, а кстати в .net-то есть такое:
using System.Diagnostics;

// get call stack
StackTrace stackTrace = new StackTrace();

// get calling method name
Console.WriteLine(stackTrace.GetFrame(1).GetMethod().Name);

Date: 2012-08-28 12:20 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
Помню, я где-то читал, что эта штука может факапнуться из-за инлайнинга.

Date: 2012-08-28 12:20 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
Плюс, да, тормозит.

Date: 2012-08-28 12:19 pm (UTC)
From: [identity profile] metaclass.livejournal.com
В средствах, как минимум в дотнете есть. Подтормаживает.

Date: 2012-08-28 12:52 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
(Thread.currentThread().getStackTrace())[2].getMethodName()

Date: 2012-08-28 01:05 pm (UTC)
From: [identity profile] denisioru.livejournal.com
После обработки сборки обфускатором сиё будет выдавать невразумительный бред. И это другое, это run-time. А речь про compile time.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2025 01:04 am
Powered by Dreamwidth Studios