Я новичок в log4net и хотел бы создать простое консольное приложение, которое выполняет следующие действия:
Считывает число в качестве ввода
Повторяет столько итераций
- Печатает время, необходимое для запуска цикла
- Создает файл журнала в следующем формате:
MM/DD/YYYY
- Ввод: <num>
- Время: <time>
мс
В моем AssemblyInfo.cs я добавил следующую строку:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Мое приложение.конфиг выглядит так:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="MyLog.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%dateExtra Info: %property{input}%property{time}%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="FileAppender"/>
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
Мой код выглядит так:
using log4net;
using System;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
private static long num;
private static readonly ILog log = LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
Console.Write("Please enter a number: ");
try
{
// gets number as input
num = long.Parse(Console.ReadLine());
if (num <= 0) throw new Exception("Number must be positive and non zero");
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
Console.Read();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.Read();
}
// create new stopwatch instance
Stopwatch sw = new Stopwatch();
// starts the timer
sw.Start();
// runs loop [num] times
for (long i = 0; i < num; i++) ;
// stops the timer
sw.Stop();
Console.WriteLine("Loop ran for {0}ms", sw.ElapsedMilliseconds);
GlobalContext.Properties["input"] = " - Input : " + num;
GlobalContext.Properties["time"] = " - Time : " + sw.ElapsedMilliseconds + "ms";
Console.Read();
}
}
}
Файл создается, но он создается пустым.В чем может быть проблема здесь?