@GLeBaTi

Логирование через синглтон?

Здравствуйте. Есть сервер, к которому подключаются пользователи. Отсюда следует, что он многопоточный.
Есть 2 способа логирования:
1) стандартный (везде вызывать эту конструкцию): LogManager.GetCurrentClassLogger().Debug("...");
2) мой (через singleton):
1 раз:
Logger.Instance.AddLogger(new Log4NetWriter(LogManager.GetCurrentClassLogger()));

а дальше: Logger.Instance.Debug("...");

Могу ли я что-либо потерять использую свой метод? (интересует производительность)
Просто не совсем понимаю что именно делает GetCurrentClassLogger.
  • Вопрос задан
  • 2592 просмотра
Решения вопроса 1
@veitmen
Приветствую.
LogManager.GetCurrentClassLogger()
Использовать следует тогда, когда вы хотите использовать отдельный логгер для каждого класса и имя логгера будет совпадать с именем класса.
Пример правильного использования:
namespace MyNamespace
{
  public class MyClass
  {
    private static Logger logger = LogManager.GetCurrentClassLogger();
  }
}

Далее всегда используете в своем классе для логирования logger.
Подробнее тут: https://github.com/NLog/NLog/wiki/Tutorial#creatin...

Если вы хотите сделать общий класс логирования и везде его использовать, то сделайте статический класс Logger, в нем реализуйте нужные вам методы логирования, которые будут использовать NLog. Т.е. примерно так:
namespace MyNamespace
{
  public static class MyClass
  {
    private static Logger logger = LogManager.GetLogger("MyCoolLogger");//или упомянутый GetCurrentClassLogger()

   public static void Debug(string message){
      logger.Log(message);
   }
...
  }
}

Собственно так используете:
Logger.Debug("Hello!");
Это простое решение, но я бы не советовал его использовать.

Я бы советовал использовать отдельный логгер для каждого класса, это BestPractise. Это позволит вам проще ориентироваться в логах, т.к. каждый логгер будет указывать на свой класс.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
А может лучше вообще через AOP?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы