Size: a a a

2020 February 10

A

Alex in Laravel Pro
invariance
Логируй через Monolog, там нет этой проблемы
Может я тупой, но монолог это же обертка просто? И она же используется в стандартном Log::info(...)

Я уже кастомный логгер класс сделал (как в доке custom channels) но не догоняю, как туда параметры протащить в invoke метод
источник

i

invariance in Laravel Pro
Alex
Может я тупой, но монолог это же обертка просто? И она же используется в стандартном Log::info(...)

Я уже кастомный логгер класс сделал (как в доке custom channels) но не догоняю, как туда параметры протащить в invoke метод
стандартный Log это и есть обертка над монологом
источник

A

Alex in Laravel Pro
invariance
стандартный Log это и есть обертка над монологом
Но при вызове Log::info не создается же новый инстанс?

Я уже думал просто запилить
$orderLog = new Logger('order');
$orderLog->pushHandler(new StreamHandler(storage_path("logs/{$user->id}/{$curdate}.log")), Logger::DEBUG);

Но тогда получается я каждый раз буду создавать новый инстанс...
источник

i

invariance in Laravel Pro
Alex
Но при вызове Log::info не создается же новый инстанс?

Я уже думал просто запилить
$orderLog = new Logger('order');
$orderLog->pushHandler(new StreamHandler(storage_path("logs/{$user->id}/{$curdate}.log")), Logger::DEBUG);

Но тогда получается я каждый раз буду создавать новый инстанс...
синглтон скорее всего юзается
источник

A

Alex in Laravel Pro
invariance
синглтон скорее всего юзается
Вот и я о том же. Мне получается для каждого своего лог файла надо отдельный синглтон делать? Что-то я совсем заблудился.
источник

i

invariance in Laravel Pro
Ты можешь существующий вызывать и в него пробрасывать новый хандлер
источник

i

invariance in Laravel Pro
Хотя не, есть вероятность ошибки
источник

i

invariance in Laravel Pro
лучше новый создавай тогда
источник

i

invariance in Laravel Pro
Просто создай свой синглтон логгера в сервис провайдере и юзай его
источник

A

Alex in Laravel Pro
Если сделать
Log::useDailyFiles(sprintf('%s/logs/postbacks/%s.log', storage_path(), $user->id), 120);

То получается все вызовы Log после этой строки будут писаться и сюда и в основной...

Судя по всему самое правильное решение через log channels, но там статика в имени и протащить что-либо в invoke не получается
источник

A

Alex in Laravel Pro
invariance
Просто создай свой синглтон логгера в сервис провайдере и юзай его
Но если сделать синглтон, то он будет с одним единственным хэндлером, а если надо записать в другой файл, то надо грохнуть хэндлеры и задать новый
источник

i

invariance in Laravel Pro
Alex
Но если сделать синглтон, то он будет с одним единственным хэндлером, а если надо записать в другой файл, то надо грохнуть хэндлеры и задать новый
Так и нужно
источник

i

invariance in Laravel Pro
Для каждой директории отдельный синглтон. Или не синглтон а просто сервис, как хочешь
источник

i

invariance in Laravel Pro
Иначе ты можешь получить непредвиденное поведение, когда пушнул хендлер в одном месте, в другом дернул сервис, а у тебя там уже хендлер стоит и ты забыл его переназначить, и логи в другую директорию ушли
источник

A

Alex in Laravel Pro
invariance
Иначе ты можешь получить непредвиденное поведение, когда пушнул хендлер в одном месте, в другом дернул сервис, а у тебя там уже хендлер стоит и ты забыл его переназначить, и логи в другую директорию ушли
вот вот
источник

A

Alex in Laravel Pro
invariance
Для каждой директории отдельный синглтон. Или не синглтон а просто сервис, как хочешь
А с сервисом это как выглядеть будет?
источник

i

invariance in Laravel Pro
Alex
А с сервисом это как выглядеть будет?
ну синглтон это тоже сервис, разница только в типе бинда
источник

i

invariance in Laravel Pro
синглтон кэшируется, обычный сервис создается заново каждый раз
источник

A

Alex in Laravel Pro
invariance
синглтон кэшируется, обычный сервис создается заново каждый раз
ок. пойду обдумаю.
источник

A

Alex in Laravel Pro
invariance
синглтон кэшируется, обычный сервис создается заново каждый раз
Благодарю
источник