blob: b5db0110959211b254c7568e3a1a1e9b39f62361 [file] [log] [blame]
using System;
using System.IO;
using System.Reflection;
using System.Threading;
using log4net;
using log4net.Config;
using log4net.Repository;
string appPath = new Uri(Assembly.GetExecutingAssembly().Location).LocalPath;
string appFolder = Path.GetDirectoryName(appPath);
// force loading the assembly, otherwise the appender type isn't found later
if (appFolder is null)
{
throw new InvalidOperationException("Can't find myself");
}
string configFile = Path.Combine(appFolder, "log4net.config");
if (!File.Exists(configFile))
{
throw new InvalidOperationException($"log4net.config not found at {configFile}");
}
if (Directory.Exists("log"))
{
Console.WriteLine("Clearing out old logs...");
foreach (string file in Directory.EnumerateFiles("log"))
{
File.Delete(file);
}
}
FileInfo info = new FileInfo(configFile);
ILoggerRepository logRepo = LogManager.GetRepository(Assembly.GetExecutingAssembly());
XmlConfigurator.ConfigureAndWatch(logRepo, info);
ILog logger = LogManager.GetLogger(typeof(Program));
Console.WriteLine("logging...");
for (int i = 0; i < 10; i++)
{
logger.Info($"test log {i}");
logger.Error($"error log {i}");
logger.Warn($"warning log {i}");
}
foreach (string file in Directory.EnumerateFiles("log"))
{
Console.WriteLine($"log file: {file}");
TryDumpFile(file);
}
static void TryDumpFile(string at)
{
if (!File.Exists(at))
{
Console.WriteLine($"File not found: {at}");
return;
}
for (int i = 0; i < 10; i++)
{
try
{
Console.WriteLine(File.ReadAllText(at));
return;
}
catch(IOException)
{
Thread.Sleep(100);
}
}
Console.WriteLine($"Unable to read file at {at}");
}