Как правильно настроить логирование в Nlog? - C#

Узнай цену своей работы

Формулировка задачи:

ИСПОЛЬЗУЕТСЯ:

C#, Visual Studio 2015 Как сделать, чтобы каждое действие в программе записывалось в лог. ПРИМЕР. - клик по кнопке; - поиск элементов; - выполняется метод "метод 1"; - переменная "n" приняла значение "значение 1"; - ошибка "ошибка 1" и т.д. Всё описанный перечень описывается в файл с фиксирование даты и времени. Попробовал это реализовать в Nlog, но что-то не очень.

КОД основного КЛАССА

Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using NLog; // добавлено
  11. using NLog.Config; // добавлено
  12. namespace rsh
  13. {
  14. public partial class Form1 : Form
  15. {
  16. // *** ЛОГЕР ***.
  17. private static Logger logger = LogManager.GetCurrentClassLogger();
  18. int r;
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. }
  23. private void button1_Click(object sender, EventArgs e)
  24. {
  25. r = 1 + 1;
  26. textBox1.Text = r.ToString();
  27. //Просто информация
  28. logger.Trace("log {0}", this.Text);
  29. logger.Debug("log {0}", this.Text);
  30. logger.Info("log {0}", this.Text);
  31. logger.Warn("log {0}", this.Text);
  32. logger.Error("log {0}", this.Text);
  33. logger.Fatal("log {0}", this.Text);
  34. }
  35. }
  36. }

КОД Program

Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using System.Windows.Forms;
  6. using NLog; // добавлено
  7. using NLog.Config; // добавлено
  8.  
  9. namespace rsh
  10. {
  11. static class Program
  12. {
  13. // ЛОГЕР
  14. private static Logger logger = LogManager.GetCurrentClassLogger();
  15. /// <summary>
  16. /// Главная точка входа для приложения.
  17. /// </summary>
  18. [STAThread]
  19. static void Main()
  20. {
  21. Application.EnableVisualStyles();
  22. Application.SetCompatibleTextRenderingDefault(false);
  23. Application.Run(new Form1());
  24. // КОНФИГУРИРУЕМ ЛОГЕР
  25. // NLog.Config.DOMConfigurator.Configure();
  26.  
  27. logger.Trace("logger.Trace");
  28. logger.Debug("logger.Debug");
  29. logger.Info("logger.Info");
  30. logger.Warn("logger.Warn");
  31. logger.Error("logger.Error");
  32. logger.Fatal("logger.Fatal");
  33. }
  34. }
  35. }

ВОПРОС

1. Как можно логирование в приведённом мной формате? 2. Как можно логирование в приближённом формате к приведённом мной? 3. Как можно вообще правильно сделать логирование?

PS

C# пока только осваиваю, поэтому прошу делать поправку на неточности в терминологии и постановке вопроса

Решение задачи: «Как правильно настроить логирование в Nlog?»

textual
Листинг программы
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  3.      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
  5.      autoReload="true"
  6.      throwExceptions="false"
  7.      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
  8.  
  9.  
  10.   <!-- optional, add some variabeles
  11.  [url]https://github.com/nlog/NLog/wiki/Configuration-file#variables[/url]
  12.  -->
  13.   <variable name="myvar" value="myvalue"/>
  14.  
  15.   <!--
  16.  See [url]https://github.com/nlog/nlog/wiki/Configuration-file[/url]
  17.  for information on customizing logging rules and outputs.
  18.   -->
  19.   <targets>
  20.  
  21.     <!--
  22.    add your targets here
  23.    See [url]https://github.com/nlog/NLog/wiki/Targets[/url] for possible targets.
  24.    See [url]https://github.com/nlog/NLog/wiki/Layout-Renderers[/url] for the possible layout renderers.
  25.    -->
  26.     <target name="console" xsi:type="Console" layout="${date:format=HH\:mm\:ss}|${level}|${message}" />
  27.     <target name="file"
  28.        xsi:type="File"
  29.        fileName="${basedir}/logs/Log.${level}.current.txt"
  30.        layout="${longdate} ${callsite} ${level}: ${message} ${exception:format=Message,StackTrace} ${stacktrace}"
  31.        archiveFileName="${basedir}/logs/archives/log.error.${shortdate}.{#}.txt"
  32.        archiveAboveSize="5242880"
  33.        archiveEvery="Day"
  34.        archiveNumbering = "Rolling"
  35.        maxArchiveFiles="3" />
  36.     <!--
  37.    Writing events to the a file with the date in the filename.
  38.    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
  39.            layout="${longdate} ${uppercase:${level}} ${message}" />
  40.    -->
  41.   </targets>
  42.  
  43.   <rules>
  44.     <!-- add your logging rules here -->
  45.     <logger name="*" minlevel="Debug" writeTo="file" />
  46.     <logger name="*" minlevel="Trace" writeTo="file" />
  47.     <!--
  48.    Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"
  49.    <logger name="*" minlevel="Debug" writeTo="f" />
  50.    -->
  51.   </rules>
  52. </nlog>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы