• Как сделать динамическое логирование в Laravel?

    @torns Автор вопроса
    FanatPHP, Я нашел где есть инфа о вызываемом методе, подскажи как я могу обратиться к "content"
    dd($request->route()); внутри - это
    Illuminate\Routing\Route {#218 ▼
      +uri: "livewire/message/{name}"
      +methods: array:1 [▶]
      +action: array:3 [▶]
      +isFallback: false
      +controller: Livewire\Controllers\HttpConnectionHandler {#456}
      +defaults: []
      +wheres: []
      +parameters: array:1 [▶]
      +parameterNames: array:1 [▶]
      #originalParameters: array:1 [▶]
      #lockSeconds: null
      #waitSeconds: null
      +computedMiddleware: array:2 [▶]
      +compiled: Symfony\Component\Routing\CompiledRoute {#464 ▶}
      #router: Illuminate\Routing\Router {#27 ▼
        #events: Illuminate\Events\Dispatcher {#28 ▶}
        #container: Illuminate\Foundation\Application {#4 ▶}
        #routes: Illuminate\Routing\RouteCollection {#30 ▶}
        #current: Illuminate\Routing\Route {#218}
        #currentRequest: Illuminate\Http\Request {#44 ▼
          #json: Symfony\Component\HttpFoundation\ParameterBag {#36 ▶}
          #convertedFiles: null
          #userResolver: Closure($guard = null) {#447 ▶}
          #routeResolver: Closure() {#455 ▶}
          +attributes: Symfony\Component\HttpFoundation\ParameterBag {#46 ▶}
          +request: Symfony\Component\HttpFoundation\ParameterBag {#36 ▶}
          +query: Symfony\Component\HttpFoundation\InputBag {#52 ▶}
          +server: Symfony\Component\HttpFoundation\ServerBag {#48 ▶}
          +files: Symfony\Component\HttpFoundation\FileBag {#49 ▶}
          +cookies: Symfony\Component\HttpFoundation\InputBag {#47 ▶}
          +headers: Symfony\Component\HttpFoundation\HeaderBag {#50 ▶}
          #content: "{"id":"vrlfAgOTCa6Xaw7bQt9C","data":{"cityList":{"class":"App\\Model\\Data\\City","id":[4,2,10,9,1,6,7,12,8,3],"relations":[],"connection":"mysql"},"update":null,"name":null},"name":"console.manage.data.city","checksum":"56f199465405d25c003aca701ec3242ae7f49aa1c3b167f40367ed96d2e5fde7","locale":"ru","children":[],"actionQueue":[{"type":"callMethod","payload":{<b>"method":"delete","params":[12</b><i></i>]}}]} ◀"
  • Как сделать динамическое логирование в Laravel?

    @torns Автор вопроса
    FanatPHP, Мб БД и сделаю :) Ну на самом деле не надо лазить по файлам. Для пользователя ничего не меняется, удобный интерфейс, поиск. Все делает код, берет нужные файлы, открывает, преобразует, выводит на экран.
  • Как сделать динамическое логирование в Laravel?

    @torns Автор вопроса
    FanatPHP, а БД не загнется? представим 1000 офисов совершают по 2000 событий в день, имхо 2 млн в сутки, а держать логи надо хотя бы 3 месяца (90 млн записей - норм ваще нет) (потом архивировать и в холодное хранилище). А с файлами, достаешь столько файлов за сколько дней нужны данные, раз в месяц архивируешь то что было 4 месяца назад. Ну хз) Интересно мнение почему это дорога в некуда
  • Как сделать динамическое логирование в Laravel?

    @torns Автор вопроса
    FanatPHP, Пробую сделать через middleware,
    Получилось построить путь к журналу, получаю пользователя, и даже могу получить ИМЯ компонента в котором совершается действие. Но какое действие совершается неизвестно.
    class UserActivityLoggerMiddleware
    {
        public function handle(Request $request, Closure $next)
        {
            dd($request->route());
    //        dd(Route::currentRouteAction());
    //        dd($request->user('staffCompany')->offices()->get());
    
            $offices = $request->user('staffCompany')->offices()->get()->toArray();
            $path = 'app/office-logger/'. $offices[0]['company_id'] .'/'. $offices[0]['id'] .'/'.date('Y').'/'.date('d-m-Y').'.log';
            $message = 'Рудди';
            $context = ['user' => 'lalala'];
    //        dd($path);
    
            Log::channel('custom')->pushHandler(new StreamHandler(storage_path($path), Logger::DEBUG))->info($message, $context);
            return $next($request);
        }
    }

    Ведь на основании того что произошло мне нужно человекопонятное сообщение, для отображение в логгере.
    dd($request->route());
    Illuminate\Routing\Route {#218 ▼
      +uri: "livewire/message/{name}"
      +methods: array:1 [▼
        0 => "POST"
      ]
      +action: array:3 [▼
        "uses" => "Livewire\Controllers\HttpConnectionHandler@__invoke"
        "controller" => "Livewire\Controllers\HttpConnectionHandler"
        "middleware" => array:2 [▼
          0 => "web"
          1 => "logger"
        ]
      ]
      +isFallback: false
      +controller: Livewire\Controllers\HttpConnectionHandler {#456}
      +defaults: []
      +wheres: []
      +parameters: array:1 [▼
        "name" => "console.manage.data.city"
      ]
      +parameterNames: array:1 [▼
        0 => "name"
      ]
      #originalParameters: array:1 [▼
        "name" => "console.manage.data.city"
      ]
  • Как сделать динамическое логирование в Laravel?

    @torns Автор вопроса
    Это первый вариант! Ведение журналов действий сотрудников конкретного отдела, конкретной компании по дням, журналы хранятся все отдельно. Ведется трекер событий, где можно посмотреть какой сотрудник где находился, какие действия совершал - это крайне важно.
  • Как сделать динамическое логирование в Laravel?

    @torns Автор вопроса
    FanatPHP, route()->getName() врядли корректно работает с laravel/livewire. Все приложенте на livewire компонентах. Подумаю как это можно будет использовать, возможно прокатит.
    Я в мидлваре могу юзать интерфейс?
  • Как сделать динамическое логирование в Laravel?

    @torns Автор вопроса
    Ммм, наверное все таки мидлвэйр не подойдет. Я буду логировать такие События как удаление, создание, изменение чего либо, указывая кто, когда и что удалил. Как я все это передам в мидлвару.
    Это должно быть типа вот так:
    public function delete(int $id){
        if(Model::destroy($id)){
             Только тут мы логируем использую текущего юзера, ид записи и тд
        }
    }
  • Как в laravel получить объект текущего пользователя вместе с жадной загрузкой зависимостей?

    Это работает до сих пор, причем запрос load можно хорошенько настроить применив, where, when, orderBy, limit - это то что юзнул я
    ->load(['reports' => function ($query) use ($request){
                    $query
                        ->orderBy('date_report', 'desc')
                        ->when($request['data']['interval'] == '9', function ($query) use ($request) {
                            return $query
                                ->where('date_report', '>=', $request['data']['intervals']['from'])
                                ->where('date_report', '<=', $request['data']['intervals']['to']);
                            }, function ($query) use ($request) {
                                return $query->limit($request['data']['interval']);
                            });
                }])
  • PHP: после json_encode, в js летят "?

    @torns Автор вопроса
    Oooh my god, я так ничего и не понял, че произошло, но заработало сразу:) Спасибо.
  • PHP: после json_encode, в js летят "?

    @torns Автор вопроса
    nokimaro,
    string(51) "["#ff0000","#00ff00","#9bfc94","#a99dcc","#eeb363"]"

    После json encode и до
    array(5) { [0]=> string(7) "#ff0000" [1]=> string(7) "#00ff00" [2]=> string(7) "#9bfc94" [3]=> string(7) "#a99dcc" [4]=> string(7) "#eeb363" }
  • Фильтр мата....?

    Классное решение)
  • Что не так с .htaccess или apache2?

    @torns Автор вопроса
    Проверил a2enmod rewrite показывает что enabled на всякий случай рестартнул апач
  • Зайти по IP на Webmin (Ubuntu 10.10)

    А мне помог твой вариант))) Спасибо)