Обновленный ответ
Чтобы добавить свойства и значения в ваш регистратор, вы можете использовать Контекстное ведение журнала и обогащение
Контекстный регистратор
Самый простой и прямой способ присоединения контекстных свойств к событию журнала
Сначала инициализировал ваш логгер:
Log.Logger = new LoggerConfiguration().ReadFrom.AppSettings().CreateLogger();
Затем вы можете создать свой контекстный регистратор:
// adding Log Context
var StudentLogger = Log.Logger.ForContext<Student>();
StudentLogger.Error(/* log message */);
Или вы можете использовать записи журнала корреляции:
// correlation Log Entries
var orderId = "some value";
var corrLog = Log.Logger.ForContext("orderId", orderId)
corrLog.Error(/* log message */);
Обогащение
В некоторых случаях мы хотели бы, чтобы каждое событие, созданное регистратором, содержало
та же, фиксированная, стоимость имущества. Пример приложения является одним из
это.
Serilog предоставляет Enrich.WithProperty () на уровне
Конфигурация Logger для этого:
Log.Logger = new LoggerConfiguration()
.Enrich.WithProperty("Application", "e-Commerce")
.Enrich.WithProperty("Environment", ConfigurationManager.AppSettings["Environment"])
// Other logger configuration
Оригинальный ответ
Существует два способа настройки Serilog:
Использование API (необходим пакет serilog.sinks.elasticsearch):
var loggerConfig = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200") ){
AutoRegisterTemplate = true,
});
var logger = loggerConfig.CreateLogger();
Документация Serilog
Использование конфигурации из AppSettings (требуется Serilog.Settings.AppSettings в дополнение к serilog.sinks.elasticsearch)
Таким образом, вы помещаете все свои настройки в файл AppSetting, например,
<appSettings>
<add key="serilog:using" value="Serilog.Sinks.Elasticsearch"/>
<add key="serilog:write-to:Elasticsearch.nodeUris" value="http://localhost:9200;http://remotehost:9200"/>
<add key="serilog:write-to:Elasticsearch.indexFormat" value="custom-index-{0:yyyy.MM}"/>
<add key="serilog:write-to:Elasticsearch.templateName" value="myCustomTemplate"/>
</appSettings>
И скажите serilog прочитать конфиг из appSettigns
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
... // Other configuration here, then
.CreateLogger()
См .: Настройка приложений и ElasticSearch Configure Sink
Я не уверен, к какому типу событий журнала вы обращаетесь? В моем случае я передаю тип объекта во время регистрации ошибок:
catch (Exception ex)
{
Logger.Error(ex, string.Format("Exception occured in Controller: {0}, Action: Post.", this.GetType()), this.GetType());