Как отключить оценку параметров для вызовов методов журналаC#

Место общения программистов C#
Ответить
Anonymous
 Как отключить оценку параметров для вызовов методов журнала

Сообщение Anonymous »

Мое приложение содержит множество операторов журналирования, что-то вроде этого:

Код: Выделить всё

var logger = new Logger(/*..get flag from settings if the logger should be active..*/);
// ....
logger.LogActivity(..serialize an object..);
//...
logger.LogActivity(..get another object's expensive overriden ToString method..);
//...
logger.LogActivity(..log something new..);
Класс регистратора:

Код: Выделить всё

public class Logger
{
private readonly bool _isActive;

public Logger(bool isActive)
{
_isActive = isActive;
}

public void LogActivity(string activity)
{
if (_isActive)
{
// Save activity to Database.
}
}
}
Когда я отключаю регистратор в настройках (поэтому поле _isActive в классе Logger имеет значение false), в базу данных ничего не сохраняется.
Но все выражения в методах Logger.LogActivity по-прежнему оцениваются (например, ..serialize object.. в предыдущем примере), и это замедляет работу моего приложения.
Я мог бы использовать такие операторы журнала:< /p>

Код: Выделить всё

var logger = new Logger(/*..get flag from settings if the logger should be active..*/);
// ....
if (loggerIsActive) logger.LogActivity(..serialize an object..);
//...
if (loggerIsActive) logger.LogActivity(..get another object's expensive overriden ToString method..);
//...
if (loggerIsActive) logger.LogActivity(..log something new..);
Но для меня было бы лучше каким-то образом изменить только мой метод LogActivity.
Можно ли так изменить класс Logger что при отключении ведения журнала (или изменении уровня журнала) выражения в вызовах LogActivity(...) не оцениваются?
Есть ли какой-либо шаблон для этого в С#?

Подробнее здесь: https://stackoverflow.com/questions/111 ... thod-calls
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»