Witam.
Ostatnio widziałem tutaj posta, w którym był porównany Serilog z NLog. Do tej pory używałem NLog ale postanowiłem dać szanse temu drugiemu. No i zaczęły się problemy.
Mam trzy projekty w solucji. Jeden z projektów to biblioteka (Class Library), która ma Serilog i obiekt Loggera.
public static class AppUtils
{
private static Logger _logger;
public static void Error(Exception ex, string message)
{
if (_logger is null)
_logger = new LoggerConfiguration().MinimumLevel.Information().WriteTo.File("logs.log", rollingInterval: RollingInterval.Day).CreateLogger();
_logger.Error(ex, message);
}
public static void Information(string message)
{
if (_logger is null)
_logger = new LoggerConfiguration().MinimumLevel.Information().WriteTo.File("logs.log", rollingInterval: RollingInterval.Day).CreateLogger();
_logger.Information(message);
}
}
Loguje mi tylko wpis z formy, w której uruchamiam usługę
AppUtils.Information("Uruchamiam usługę");
NIE LOGUJE - w usłudze
try
{
AppUtils.Information("Uruchamiam usługę");
_sql = new SqlService();
_appConfig = _sql.LoadConfiguration();
_optima = new OptimaService(_sql, _appConfig);
TimerService.CreateSchedules(_appConfig, _optima, _sql);
AppUtils.Information("Usługa uruchomiona. Timery ustawione");
}
catch(Exception ex)
{
AppUtils.Error(ex, "ServiceStart");
}
NIE LOGUJE - jedno z zadań, które uruchamiam przy pomocy FluentScheduler
public void Execute()
{
AppUtils.Information("[ORDER_JOB] Starting");
EmpikService empik = new EmpikService(_appConfig, _sql);
try
{
AppUtils.Information("[ORDER_JOB] GetAndAcceptNewOrders()");
empik.GetAndAcceptNewOrders();
}
catch (Exception ex)
{
AppUtils.Error(ex, "[ORDER_JOB] GetAndAcceptNewOrders()");
}
try
{
var orders = empik.GetOrdersForShipping();
for (int i = 0; i < orders.Orders.Count; i++)
{
var order = orders.Orders[i];
try
{
AppUtils.Information("[ORDER_JOB] InsertOrder " + order.OrderId);
_optima.InsertOrder(order);
}
catch (Exception ex)
{
AppUtils.Error(ex, "[ORDER_JOB] InsertOrder()");
}
}
}
catch(Exception ex)
{
AppUtils.Error(ex, "[ORDER_JOB] GetOrdersForShipping()");
}
}
Co robię źle? Jak mam ogarnąć "globalny" logger? Najlepiej było by jakby każdy element miał swojego loggera ale to też nie działa. Też loguje mi tylko z projektu WinForms.