Пишем логи на C# (.NET). Легкий способ.
Пишем логи на C# (.NET). Легкий способ.
- Дата/Время
- Полное имя метода, в котором возникло исключение
- Свойство Message объекта исключения
using System;
using System.IO;
using System.Text;
using System.Diagnostics;
using System.Reflection;
namespace LogHelper
{
public class Log
{
private static object sync = new object();
public static void Write(Exception ex)
{
try
{
// Путь .\\Log
string pathToLog = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log");
if (!Directory.Exists(pathToLog))
Directory.CreateDirectory(pathToLog); // Создаем директорию, если нужно
string filename = Path.Combine(pathToLog, string.Format("{0}_{1:dd.MM.yyy}.log",
AppDomain.CurrentDomain.FriendlyName, DateTime.Now));
string fullText = string.Format("[{0:dd.MM.yyy HH:mm:ss.fff}] [{1}.{2}()] {3}\r\n",
DateTime.Now, ex.TargetSite.DeclaringType, ex.TargetSite.Name, ex.Message);
lock (sync)
{
File.AppendAllText(filename, fullText, Encoding.GetEncoding("Windows-1251"));
}
}
catch
{
// Перехватываем все и ничего не делаем
}
}
}
}
Вывод:
private void FuncName() {
try
{
}
catch (Exception msg)
{
Write(msg); //запись в лог
MessageBox.Show(msg.ToString()); //Вывод сообщения на экран, можно исключить
throw;
}
Собственно, при возникновении ошибки создается папка Log. Внутри неё лежит тестовый файл лога
-----------------------------------------------------------------------
Второй способ (используем NLog)
Скачиваем NLog.
Добавляем в ссылки NLog.dll.
Прописывем using NLog;
В папке где и сборка создаем файл NLog.config со следующим содержанием:
<?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">
<targets>
<target name="console" xsi:type="Console" layout="${date:format=HH\:mm\:ss}|${level}|${message}" />
<target name="file" xsi:type="File" fileName="${basedir}/nlog.txt" layout="${date}|${level}|${message}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="console" />
<logger name="*" minlevel="Trace" writeTo="file" />
</rules>
</nlog>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="console" xsi:type="Console" layout="${date:format=HH\:mm\:ss}|${level}|${message}" />
<target name="file" xsi:type="File" fileName="${basedir}/nlog.txt" layout="${date}|${level}|${message}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="console" />
<logger name="*" minlevel="Trace" writeTo="file" />
</rules>
</nlog>
В программе вставляем следущее
private static Logger logger = LogManager.GetCurrentClassLogger();
private static Logger logger = LogManager.GetCurrentClassLogger();
public partial class Form1 : Form
{
private static Logger logger = LogManager.GetCurrentClassLogger();
{
private static Logger logger = LogManager.GetCurrentClassLogger();
public Form1()
{
InitializeComponent();
}
Использовать можно в любом месте кода:
logger.Debug("log {0}", this.Text);
Либо:
try
{
}
catch (Exception msg)
{
logger.Debug(msg.ToString());
}
Файл с логом создается в той же папке где лежит сборка. Имя nlog.txt
Комментарии
Отправить комментарий