Есть ли по умолчанию ILogger для консольных приложений c #? - PullRequest
0 голосов
/ 04 января 2019

В Java легко вызвать объект Logger по умолчанию с минимальной церемонией и нулевой конфигурацией:

import java.util.logging.*;
public class Whatever {
    private static final Logger log = Logger.getLogger("com.foo.Whatever");
    public void doSomething() {
        log.debug("doing something");
    }
}

Предполагается, что C # имеет сравнимый эквивалент (по умолчанию ILogger с консольным выводом, который можно легко вызывать из консольного приложения с минимальной церемонией, не требует сторонних фреймворков и является просто тонкой оболочкой для Console.WriteLine ()) что это?

В качестве альтернативы, если не сопоставимый эквивалент по умолчанию, может кто-нибудь показать простой пример того, как до сделать это в консольном приложении C #?

Мой вопрос ОСОБЕННО относится к ILogger .

Существует конкретная причина, по которой я хочу использовать ILogger - моя библиотека в конечном итоге будет использоваться приложением Unity3d. Я не знаю, как это сделать (пока), но, видимо, есть какой-то способ сделать Debug.Log Logger UnityEngine похожим на ILogger для библиотек не-Unity.

По сути, я хочу иметь возможность воспользоваться преимуществами Debug.Log UnityEngine, когда библиотека работает под Unity, не делая ее зависимой от Debug.Log UnityEngine, чтобы иметь возможность компилировать или запускать на всех, Заставить ILogger работать в консольном приложении - это только первый шаг в долгом путешествии.

1 Ответ

0 голосов
/ 05 января 2019

Нет, и я бы не стал ссылаться ни на какой сторонний регистратор напрямую. Вместо этого определите интерфейс для регистратора, который вы хотите. Это может быть что-то простое, как

public interface ILogger
{
    Log(string message);
    LogException(Exception ex);
}

Используйте свой собственный интерфейс, а не чей-либо еще. Затем вы можете использовать любое количество сторонних регистраторов, если вам нужно, и адаптировать их к своему интерфейсу. Или вы можете написать реализацию, которая записывает отладочный вывод нашей консоли.

Здорово использовать существующую библиотеку, просто не привязывайтесь к ней, внедряя их интерфейс повсеместно в ваших классах.

...