csharp 在Visual Studio(适用于大型项目)的整个解决方案中,使用公共库中的NLog工作的示例类。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 在Visual Studio(适用于大型项目)的整个解决方案中,使用公共库中的NLog工作的示例类。相关的知识,希望对你有一定的参考价值。
/// <summary>
/// Помошник по ведению логов
/// Статический интерфейс над библиотекой для логирования (в данном случае - NLog2)
/// </summary>
public static class LogHelper
{
/// <summary>
/// Инициализация логгера.
/// </summary>
private static Logger _logger = LogManager.GetCurrentClassLogger();
/// <summary>
/// Запись сообщения в лог файл.
/// </summary>
/// <param name="type">Тип сообщения.</param>
/// <param name="message">Сообщение, которое надо записать в файл лога.</param>
public static void Log(LogMessageType type, string message)
{
ReinitLogger();
Log(message, type);
}
/// <summary>
/// Запись сообщения в лог файл.
/// </summary>
/// <param name="type">Тип сообщения.</param>
/// <param name="format">Строка с форматом сообщения.</param>
/// <param name="args">Аргумент форматной строки.</param>
public static void Log(LogMessageType type, string format, object args)
{
string message = String.Format(format, args);
Log(message, type);
}
/// <summary>
/// Запись сообщения в лог файл.
/// </summary>
/// <param name="type">Тип сообщения.</param>
/// <param name="format">Строка с форматом сообщения.</param>
/// <param name="args">Аргументы для сообщения по заданному формату.</param>
public static void Log(LogMessageType type, string format, params object[] args)
{
string message = String.Format(format, args);
Log(message, type);
}
/// <summary>
/// Перенастройка логгера на новый метод и класс, который логируется.
/// </summary>
private static void ReinitLogger()
{
// пропускаем два кадра вверх по стеку - переходим к вызвавшему LogHelper.Log методу
var frame = new StackFrame(2, false);
// определяем полное имя класса, в котором расположен вызвавщий метод
_logger = LogManager.GetLogger(frame.GetMethod().DeclaringType.FullName);
}
/// <summary>
/// Запись сообщения указанноо типа в лог.
/// </summary>
/// <param name="message">Сообщение, которое будет записано в лог.</param>
/// <param name="type">Тип сообщения.</param>
private static void Log(string message, LogMessageType type)
{
switch (type)
{
case LogMessageType.Info:
LogInfo(message);
break;
case LogMessageType.Error:
LogError(message);
break;
case LogMessageType.Warning:
LogWarning(message);
break;
case LogMessageType.Debug:
LogDebug(message);
break;
}
}
/// <summary>
/// Информационное сообщение.
/// </summary>
/// <param name="str">Текст сообщения.</param>
private static void LogInfo(string str)
{
_logger.Info(str);
}
/// <summary>
/// Отладочное сообщение.
/// </summary>
/// <param name="str">Текст сообщения.</param>
private static void LogDebug(string str)
{
_logger.Debug(str);
}
/// <summary>
/// Сообщение с предупреждением.
/// </summary>
/// <param name="str">Текст сообщения.</param>
private static void LogWarning(string str)
{
_logger.Warn(str);
}
/// <summary>
/// Сообщение об ошибке.
/// </summary>
/// <param name="str">Текст сообщения.</param>
private static void LogError(string str)
{
_logger.Error(str);
}
}
以上是关于csharp 在Visual Studio(适用于大型项目)的整个解决方案中,使用公共库中的NLog工作的示例类。的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Python 的 Visual Studio Code 缩进
MFC 是不是仅适用于 Visual Studio,不适用于 Visual C++ Express?
适用于 Windows Phone 8 的 Visual Studio Express 2012 - 它在哪里?
适用于 Visual Studio 2012/2013 的 MySQL