1

I try to log to ES through Serilog and I'm having trouble getting the enrichment to work. I should like to include values from my app.config to leverage information updated by deployment.

None of the fields are shown in ES/Rolling file. I've verified that the values are read as expected from app.config.

Setup: Console application, static logger instance, Enrich.With<>

Any ideas as to what I doing wrong?

    public class SettingsEnricher : ILogEventEnricher
{
    public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
    {
        var settings = new SettingsFromConfigFile();
        propertyFactory.CreateProperty("Environment", settings.Environment);
        propertyFactory.CreateProperty("SuiteName", settings.SuiteName);
        propertyFactory.CreateProperty("ComponentName", settings.ComponentName);
        propertyFactory.CreateProperty("ReleaseNumber", settings.ReleaseNumber);
    }
}
public class SettingsFromConfigFile
{
    public SettingsFromConfigFile()
    {
        Environment = ConfigurationManager.AppSettings["Environment"];
        SuiteName = ConfigurationManager.AppSettings["SuiteName"];
        ComponentName = ConfigurationManager.AppSettings["ComponentName"];
        LogFileDirectory = ConfigurationManager.AppSettings["LogFileDirectory"];
        EsLoggingUrl = ConfigurationManager.AppSettings["EsLoggingUrl"];
        ReleaseNumber = ConfigurationManager.AppSettings["ReleaseNumber"];

        FileName = $"{LogFileDirectory}{SuiteName}.{ComponentName}.log";

        EsLoggingUri = new Uri(EsLoggingUrl);
        ElasticsearchSinkOptions = new ElasticsearchSinkOptions(EsLoggingUri);
    }

    public string LogFileDirectory { get; set; }

    public string ReleaseNumber { get; set; }
    public string ComponentName { get; set; }
    public string SuiteName { get; set; }
    public string FileName { get; set; }
    public string EsLoggingUrl { get; set; }
    public Uri EsLoggingUri { get; set; }
    public ElasticsearchSinkOptions ElasticsearchSinkOptions { get; set; }
    public string Environment { get; set; }
}
public class StandardLoggerConfigurator
{
    public static ILogger GetEnrichedLogger()
    {
        var settings = new SettingsFromConfigFile();

        return new LoggerConfiguration()
            .Enrich.With<SettingsEnricher>()
            //.Enrich.FromLogContext()
            .WriteTo.RollingFile(settings.FileName)
            .WriteTo.Elasticsearch(settings.ElasticsearchSinkOptions)
            .CreateLogger();
    }
}
internal class Program
{
    private static void Main(string[] args)
    {
        Log.Logger = StandardLoggerConfigurator.GetEnrichedLogger();
        Log.Logger.Information("Starting service!!!!!");
Anders Juul
  • 2,407
  • 3
  • 34
  • 56

0 Answers0