Как правильно настроить логирование в Nlog? - C#
Формулировка задачи:
ИСПОЛЬЗУЕТСЯ:
C#, Visual Studio 2015 Как сделать, чтобы каждое действие в программе записывалось в лог. ПРИМЕР. - клик по кнопке; - поиск элементов; - выполняется метод "метод 1"; - переменная "n" приняла значение "значение 1"; - ошибка "ошибка 1" и т.д. Всё описанный перечень описывается в файл с фиксирование даты и времени. Попробовал это реализовать в Nlog, но что-то не очень.КОД основного КЛАССА
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using NLog; // добавлено
- using NLog.Config; // добавлено
- namespace rsh
- {
- public partial class Form1 : Form
- {
- // *** ЛОГЕР ***.
- private static Logger logger = LogManager.GetCurrentClassLogger();
- int r;
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- r = 1 + 1;
- textBox1.Text = r.ToString();
- //Просто информация
- logger.Trace("log {0}", this.Text);
- logger.Debug("log {0}", this.Text);
- logger.Info("log {0}", this.Text);
- logger.Warn("log {0}", this.Text);
- logger.Error("log {0}", this.Text);
- logger.Fatal("log {0}", this.Text);
- }
- }
- }
КОД Program
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using NLog; // добавлено
- using NLog.Config; // добавлено
- namespace rsh
- {
- static class Program
- {
- // ЛОГЕР
- private static Logger logger = LogManager.GetCurrentClassLogger();
- /// <summary>
- /// Главная точка входа для приложения.
- /// </summary>
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new Form1());
- // КОНФИГУРИРУЕМ ЛОГЕР
- // NLog.Config.DOMConfigurator.Configure();
- logger.Trace("logger.Trace");
- logger.Debug("logger.Debug");
- logger.Info("logger.Info");
- logger.Warn("logger.Warn");
- logger.Error("logger.Error");
- logger.Fatal("logger.Fatal");
- }
- }
- }
ВОПРОС
1. Как можно логирование в приведённом мной формате? 2. Как можно логирование в приближённом формате к приведённом мной? 3. Как можно вообще правильно сделать логирование?PS
C# пока только осваиваю, поэтому прошу делать поправку на неточности в терминологии и постановке вопросаРешение задачи: «Как правильно настроить логирование в Nlog?»
textual
Листинг программы
- <?xml version="1.0" encoding="utf-8" ?>
- <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
- autoReload="true"
- throwExceptions="false"
- internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
- <!-- optional, add some variabeles
- [url]https://github.com/nlog/NLog/wiki/Configuration-file#variables[/url]
- -->
- <variable name="myvar" value="myvalue"/>
- <!--
- See [url]https://github.com/nlog/nlog/wiki/Configuration-file[/url]
- for information on customizing logging rules and outputs.
- -->
- <targets>
- <!--
- add your targets here
- See [url]https://github.com/nlog/NLog/wiki/Targets[/url] for possible targets.
- See [url]https://github.com/nlog/NLog/wiki/Layout-Renderers[/url] for the possible layout renderers.
- -->
- <target name="console" xsi:type="Console" layout="${date:format=HH\:mm\:ss}|${level}|${message}" />
- <target name="file"
- xsi:type="File"
- fileName="${basedir}/logs/Log.${level}.current.txt"
- layout="${longdate} ${callsite} ${level}: ${message} ${exception:format=Message,StackTrace} ${stacktrace}"
- archiveFileName="${basedir}/logs/archives/log.error.${shortdate}.{#}.txt"
- archiveAboveSize="5242880"
- archiveEvery="Day"
- archiveNumbering = "Rolling"
- maxArchiveFiles="3" />
- <!--
- Writing events to the a file with the date in the filename.
- <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
- layout="${longdate} ${uppercase:${level}} ${message}" />
- -->
- </targets>
- <rules>
- <!-- add your logging rules here -->
- <logger name="*" minlevel="Debug" writeTo="file" />
- <logger name="*" minlevel="Trace" writeTo="file" />
- <!--
- Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
- <logger name="*" minlevel="Debug" writeTo="f" />
- -->
- </rules>
- </nlog>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д