|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Коллеги! Хочу дополнить логгирование в проекте возможностью отсылки некоторых сообщений в канал Slack. Сервис отсылки в Slack работает. Я могу отослать сообщение в Slack. Создаю класс логгера и проавайдера вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80.
В Startup добавляю провайдер так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
После этого ВСЕ логи начинают валиться в Slack, а я хочу, чтобы ТОЛЬКО ТЕ, что мне НУЖНЫ были там, а все остальное осталось без изменений. Что я сделал неправильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 16:41 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Интерсный подход в функции IsEnabled ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:16 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Вероятно, автор думает, что break прерывает метод, а не switch, и возвращает default(bool) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:22 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Shocker.Pro автор ничего не думает. это пока заглушка. не обращайте на IsEnabled внимание. там всегда будет true и этого пока достаточно ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:24 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
В общем пока картина такая: - по умолчанию логи обрабатывает последний зарегистрированный в LoggerFactory провайдер (и это мой провайдер) - а мне бы хотелось, чтобы ничего не ломая, что было написано ранее, просто добавить еще одну возможность логгирования. так возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:56 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
RegisteredUser ТОЛЬКО ТЕ, что мне НУЖНЫ были RegisteredUser это пока заглушка. там всегда будет true RegisteredUser Что я сделал неправильно? Вообще, фильтрация по LogLevel делается на уровне настройки провайдера, а не внутри логгера. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:56 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
RegisteredUser по умолчанию логи обрабатывает последний зарегистрированный в LoggerFactory провайдер https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 17:59 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
я хз зачем все это если есть https://github.com/eth0izzle/NLog.Slack https://github.com/mgibas/serilog-sinks-slack ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 10:03 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Shocker.Pro RegisteredUser ТОЛЬКО ТЕ, что мне НУЖНЫ были RegisteredUser это пока заглушка. там всегда будет true RegisteredUser Что я сделал неправильно? Вообще, фильтрация по LogLevel делается на уровне настройки провайдера, а не внутри логгера. Предлагаю считать, что IsEnabled имеет вот такое наполнение Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 10:20 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
А вопрос-то тогда какой? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 10:33 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Shocker.Pro А вопрос-то тогда какой? Вопрос такой: - сейчас в проекте работает логгирование и я хочу оставить его так, как оно сейчас работает - я хочу добавить в проект свое логгирование в Slack - эти логгирования должны работать одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 10:56 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Я дал ссылку на документацию по логированию в Core Что сделано в соответствии с этой документацией, что работает не так, как ожидалось? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 11:06 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Скорее всего автор имеет ввиду оставить дефолтный коровский логгер, а в контроллере дополнительно логировать определенные события в дополнительный логгер. Например info-сообщения логируем в один текстовый файл, errors- в другой. Но при этом, по дефолту настроенный ASP Core логгер также пишет сообщения в консоль. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 11:46 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
vb_sub Скорее всего автор имеет ввиду оставить дефолтный коровский логгер, а в контроллере дополнительно логировать определенные события в дополнительный логгер. Например info-сообщения логируем в один текстовый файл, errors- в другой. Но при этом, по дефолту настроенный ASP Core логгер также пишет сообщения в консоль. Но пока автор не расшифровал, что он понимает под RegisteredUser ТЕ, что мне НУЖНЫ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 11:55 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
vb_sub Скорее всего автор имеет ввиду оставить дефолтный коровский логгер, а в контроллере дополнительно логировать определенные события в дополнительный логгер. именно так! А мой логгер должен писать в Slack. Всё! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 13:49 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Ну тогда зачем тебе вообще нужна реализация ILogger? Для универсальности только. Просто добавляешь свой сервис логирования и пробрасываешь в нужные контроллеры параллельно с штатным логгером P.S. vb_sub, тебе орден хрустального шара! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 13:51 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
vb_sub Скорее всего автор имеет ввиду оставить дефолтный коровский логгер, а в контроллере дополнительно логировать определенные события в дополнительный логгер. Например info-сообщения логируем в один текстовый файл, errors- в другой. Но при этом, по дефолту настроенный ASP Core логгер также пишет сообщения в консоль. Это абсолютно неправильный подход. Сама суть использования всевозможных провайдеров в том, что ты всегда и все пишешь в один и тот же единственный ILogger, а на уровне конфигурации разруливаешь что конкретно куда писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 14:59 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
fkthat Это абсолютно неправильный подход. Сама суть использования всевозможных провайдеров в том, что ты всегда и все пишешь в один и тот же единственный ILogger, а на уровне конфигурации разруливаешь что конкретно куда писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 15:05 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
Shocker.Pro Ну тогда зачем тебе вообще нужна реализация ILogger? Для универсальности только. Просто добавляешь свой сервис логирования и пробрасываешь в нужные контроллеры параллельно с штатным логгером P.S. vb_sub, тебе орден хрустального шара! Пробрасывать два логгера в контроллер как-то зашкварно, отловить бы в какой логгер кидать сообщения на более высоком уровне. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 15:13 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
RegisteredUser Что я сделал неправильно? Неправильно поставили задачу. Ваша задача сводится к фильтрации. Вместо этого вы _заменили_ дефолтный логгер. Непонятно зачем вы это сделали. Вам нужно добавить провайдер слака, вот этот например https://github.com/imperugo/Microsoft.Extensions.Logging.Slack и настроить фильтрацию, как описано здесь https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1#log-filtering можете в слак писать только сообщения определённой категории ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 21:46 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
vb_sub Shocker.Pro Ну тогда зачем тебе вообще нужна реализация ILogger? Для универсальности только. Просто добавляешь свой сервис логирования и пробрасываешь в нужные контроллеры параллельно с штатным логгером P.S. vb_sub, тебе орден хрустального шара! Пробрасывать два логгера в контроллер как-то зашкварно, отловить бы в какой логгер кидать сообщения на более высоком уровне. хернёй страдаете. из коробки есть гибкая фильтрация по уровню журнала, по категории пишите чё хотите, куда хотите, всё через один единственный логгер ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 21:48 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
В общем я сделал так (ILogger Extension): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
единственное, что мне тут не нравится, так это необходимость передачи параметром ISlackService slackService. т.к. DI в static метод, судя по ответам гугла, это какой-то гимор/антипаттерн/фу-фу-фу . ладно, буду пока его передавать, а дальше посмотрим. использую в контроллере так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 13:49 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
RegisteredUser, чёт это какой-то полный пи...ц написал же как сделать по уму. что за чудовище вы изобрели? зачем? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 22:05 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
тебе hVostt написал как сделать я по привычки когда скинул ссылки забыл что логер от мс тоже стал приличным у тебя точка входа для логов не должна знать куда и что идет. это разруливается на уровне конфигурирования логера ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 08:24 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
hVostt RegisteredUser Что я сделал неправильно? ... и настроить фильтрацию, как описано здесь https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1#log-filtering можете в слак писать только сообщения определённой категории - я хочу в слак писать сообщения ЛЮБОЙ категории, как захочу. так можно? - я хочу чтобы в слак летели НЕ все сообщения определенной категории из всего приложения, а только из тех мест кода, откуда я бы хотел получать информацию в слак. так можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 12:43 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
RegisteredUser - я хочу в слак писать сообщения ЛЮБОЙ категории, как захочу. так можно? - я хочу чтобы в слак летели НЕ все сообщения определенной категории из всего приложения, а только из тех мест кода, откуда я бы хотел получать информацию в слак. так можно? вы резко изменили свои требования, изначально они звучали так RegisteredUser Хочу дополнить логгирование в проекте возможностью отсылки некоторых сообщений в канал Slack. Сервис отсылки в Slack работает. Я могу отослать сообщение в Slack. теперь вам уже не нужно _дополнить_, а вы хотите независимо от настроек журналирования слать чего-то там в слак. ну шлите ради бога отдельно, сделайте отдельный слак-сервис и шлите, че вы мозги нам тут колупаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2019, 00:14 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
RegisteredUser, если вас не устраивают возможности фильтрации коробочного решения, вы можете подключить другой логгер, с расширенными возможностями. например, Serilog, который отлично интегрируется с ILogger от Microsoft, в котором вы можете добавить фильтрацию какой угодно сложности: https://github.com/serilog/serilog/wiki/Configuration-Basics#filters для Serilog-а имеются и совсем продвинутые фильтры, на основе DSL но, боюсь, с вашими постановками, это только всё ещё больше усложнит )) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2019, 00:36 |
|
свой LoggerProvider в ASP.Net Core приложении
|
|||
---|---|---|---|
#18+
RegisteredUser, у меня получилось сделать решение на троечку, но рабочее. В дальнейшем подумаю, как его допилить покрасивее, может комьюнити подскажет. Опишу ситуацию, с которой столкнулся, по описанию она совпадет с твоей по моему мнению В приложении нужно иметь логера-любимчика, который будет использоваться в конкретных случаях, которые будут явно указываться автором приложения. У меня создается отдельный текстовый файл логов(slacklog.txt), куда я пишу эти конкретные вызовы логгера. Есть текстовый файл для общего лога (log2.txt). Есть текстовый файл логов, где я хочу видеть логи, которые произошли только в контроллерах(log.txt). 1)Создаем текстовые логгеры Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88.
Делаем логгер-провайдер, который будет выбирать, какой из них использовать в зависимости от значения категории Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Регистрируем логгеры в сервисах(ConfigureServices) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Не знаю почему, но когда вызываем Logger.LogInformation("..."), то и ConsoleLogger их публикует и TextLoggerProvider, поэтому приходится ставить жесткую заглушку- хотелось бы переделать этот момент, если кто в курсе как подскажите плиз. Создаем пустой класс-заглушку для категории, потому что просто строку использовать нельзя Код: c# 1.
В контроллере, где хотим использовать логгеры инжектим их. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
В том месте, где хотим кинуть лог в конкретный файл вызываем их Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 23:56 |
|
|
start [/forum/topic.php?all=1&fid=18&tid=1354586]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 269ms |
total: | 399ms |
0 / 0 |