#c# #serilog
#c# #serilog
Вопрос:
У меня есть класс Logger.cs:
public Logger(string logtype=null)
{
_logtype = logtype;
LogEventLevel level = LogEventLevel.Warning;
if (File.Exists(configPath))
{
XDocument xdoc = XDocument.Load(configPath);
string val = xdoc.Descendants("logEnabled").First().Value;
// if(clientConfig.LogEnabled == true)
if (val == "true")
{
level = LogEventLevel.Debug;
}
else if (val == "false")
{
level = LogEventLevel.Warning;
}
}
else
{
level = LogEventLevel.Warning;
}
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, level)
.CreateLogger();
}
этот класс logger используется в нескольких проектах в решении. Как показано ниже:
Class A {
Logger _logger = new Logger("A");
}
Class A1 {
Logger _logger = new Logger("A");
}
Class B {
Logger _logger = new Logger("B");
}
Class B1 {
Logger _logger = new Logger("A");
}
С моим приведенным выше кодом. Теперь я вижу, что в файл журнала записывается только первое ведение журнала. Класс A и класс A1 используют один и тот же файл журнала «A», когда моя программа выполняется, я вижу, что в журнале присутствует только протоколирование класса A, но не сообщения о протоколировании класса A1.
То же самое для классов B и B1, видны только сообщения класса B.
Как я могу использовать один и тот же файл журнала в нескольких проектах в решении?
Ответ №1:
Вам нужно будет включить общие файлы журналов для нескольких процессов, установить shared
в true
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, level, shared: true)
.CreateLogger();
Для получения дополнительной информации проверьте общие файлы журнала
Комментарии:
1. Как можно установить это свойство через appsetting.json?
2. @user1066231 Попробуй
"WriteTo": [{ "Name": "File", "Args": { "path": "log.txt", "shared": "true" } }]