Имя файла журнала, номер строки в журналах. Нужно ли передавать StackFrame? - PullRequest
4 голосов
/ 20 мая 2011

В настоящее время я передаю StackFrame, чтобы получить текущий номер файла / строки:

Log.Message(new StackFrame(0, true), "FAILED to start cooling.");

Где в классе журнала:

public void Message(StackFrame Callstack, string message)
{
    string logMessage = string.Format("{0} {1}:{2} {3} \t{4}", DateTime.Now.ToString(), Callstack.GetFileName(), Callstack.GetFileLineNumber(), Callstack.GetMethod(), message);

    //Write to console
    Console.WriteLine(logMessage);

    //write to file
}

Нужно ли передавать StackFrameкаждый раз к методу Log.Message ()?Можно ли это сделать в методе само по себе, не передавая его?Есть ли более простой способ?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Вы можете сделать:

public void Message(string message) {
    StackFrame callstack = new StackFrame(1, true);
    // ...
}

1 пропускает часть метода Message стека вызовов и получает его вызывающим.

0 голосов
/ 20 мая 2011

Можно.Первый параметр конструктора StackFrame определяет количество пропускаемых кадров.Поэтому при создании экземпляра объекта в Message() просто передайте 1, и он покажет вызывающий кадр (где вы использовали вызов Message()).

...