Я использую .Net CORE, и я пишу программу, которая выводит журналы на экран, а также сохраняет журналы в файл. Итак, весь мой код заполнен такими строками:
Console.WriteLine("starting app");
Log.Debug("stating app");
if (args.Length < 2)
{
Log.Debug("got less than 2 arguments");
Console.WriteLine("Should be run with arguments:");
Console.WriteLine("<DirecotryPath> <OutputPath>");
return;
Есть ли что-то, чтобы предотвратить это дублирование в моем коде? Спасибо
Любая структура журналирования спуска может одновременно записывать сообщение в несколько пунктов назначения: файл, экран, удаленную службу журнала и т. д. Просто посмотрите NLog или log4net
В вашем коде нет дублирования. Прямо сейчас ваш код - лучший вариант. Может быть, вы хотите отредактировать свой вопрос, чтобы включить фактическое дублирование?





Для дублирования кода вы можете создать общий метод, который называется
public void Log(string message,Source source) // Source is Enum to check to print on screen or file or both for example
{
switch(source)
{
Case Source.Screen:
Console.WriteLine(message);
break;
Case Source.Log:
Log.Debug(message);
break;
default:
break;
}
}
Это для более простого ведения журнала. Более того, вы можете использовать Log4Net, который дает вам огромное количество средств ведения журнала только с использованием некоторых конфигураций и руководства ниже
Индивидуальный подход
Вы можете создать свой собственный метод, который будет регистрировать все пункты назначения:
public void Log(string message) {
Log.Debug(message);
Console.WriteLine(message);
}
С этого момента вы просто вызываете свой недавно созданный метод Log:
Log("stating app");
И он войдет в оба пункта назначения ...
Рамочный подход
Есть много фреймворков, которые решают эту проблему. например log4net Ознакомьтесь с @ Ответ Хани Хабиба для более подробной информации:
Кроме того, что вы не продемонстрировали дублирования ... создайте метод "Log_n_Display", и он будет использовать оба варианта?