• 02-12-2022, 18:51:17
    #1
    api ile veya başka şekilde log dosyası yani kendi middlewareimizi oluşturarak loglama yapabiliriz bölece kimin hangi ipden girdiğini
    kaç saniyede işlem yaptığını, hangi tarihte işlem yaptığını vs... bunları loglayarak yani log kaydı tutatarak görebiliyoruz...laravel bize böle bir seçenek sunuyor..
    ilk önce bir middleware dosyası oluşturuyoruz.. terminalden:
    php artisan make:middleware Apilog
    middleware dosyamız:
    use Illuminate\Http\Request;
    use Illuminate\Http\Response;
    use Illuminate\Support\Facades\Log;
    // use yazanları enüste ekleyin
    // yeni bir function terminate metodu açıyoruz
    
    public function terminate($request, $response){
    if(env('API_LOGGER')){
    $starttime= LARAVEL_START;
    $endtime= microtime(true);
    
    $log= '['.date("Y-m-d H:i:s").']';
    //$log.= '['.($endtime-$starttime) * 100.' ms]';
    
    $log.= '['.$request->ip().']';
    
    $log.= '['.$request->method().']';
    $log.= '['.$request->fullUrl().']';
    
    Log::info($log);
    
    }
    }
    eğer gelişmiş olarak loglamayı açıp kapatmak için ise: .env dosyamıza giriyoruz ve API_LOGGER=false
    YANİ BU NEDEMEK?? true ise açık olcak diğer türlü kapalı demektir..
    Bu paylaşımları Laravele hakim olduğum için yapıyorum ve lütfen bir teşekkürü çok görmeyin emeğe saygı ve lütfen beğenmeyi unutmayın sevgiler...
  • 02-12-2022, 19:22:33
    #2
    Teşekkürler, çoğu sitemde laravel frameworklu yazılımlar kullanıyorum işime yarayacaktır.
  • 02-12-2022, 19:42:48
    #3
    alit adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler, çoğu sitemde laravel frameworklu yazılımlar kullanıyorum işime yarayacaktır.
    rica ederim daha çok bilgi paylaşacağım umarım vaktim olur vaktim oldukça paylaşıyorum
  • 02-12-2022, 19:54:40
    #4
    Başlığı görünce yardıma ihtiyaç var sanıp yardım etmeye gelmiştim, başlıktan anladığımı anlatayım ilk önce
    Api ile laravel bir sisteme bağlanıp , bağlanılan sistemde log dosyası oluşturma işlemi nasıl yapılır ?
    Şimdi bu sorunun cevabını anlatayım.
    A sitemiz farklı bir script olsun. B sitemiz ise laravel
    A sitesinden post yöntemi ile göndermeniz gerekenler şunlar ;
    [
    'log_level'=>'error/info/success',
    'log_message'=>'Bu bir log mesajıdır',
    'log_key'=>'asitesidomaini.com.tr'
    ]
    Åžimdi bunu B sitesinde bsitesidomanini.com.tr/api/log/create linkine post ettik.
    B sitesinde kurulu olan laravel scriptimize gelip routes/api.php dosyasını açıp şu kodu ekliyoruz.
     Route::group(['prefix' => '/log', 'as' => 'log.'], function () {
                Route::post('/create', ['as' => "create", 'uses' => "LogController@create"]);
                Route::any('/show/{log_key}', ['as' => "show", 'uses' => "LogController@show"]);
            });
    Bunlar bizim rotalarımızdı. Şimdi terminal aracılığıyla php artisan optimize diyerek bir optimize edelim ki rotamız çalışır vaziyete gelsin.
    Bu işlemi yaptıktan sonra sıra geldi controllerı oluşturup apiyi yaratmaya başlıyoruz.
    Adım 1: terminale "php artisan make:controller Api/LogController" yazıyoruz
    Adım 2: app/Http/Controllers/Api/LogController dosyamızı açıp şu fonksiyonları ekliyoruz

    public function create(Request $request){
    
    $log_level ='['.date('d-m-Y H:i:s').'] production.'. $request->log_level.': ';
       $log_message = '\n'.$request->log_message;
        $file_name = $request->log_key;
        if (!file_exists(storage_path('logs').'/'.$file_name.'.log')) {
    touch(storage_path('logs') . '/' . $file_name . '.log');
        }
    $file= storage_path('logs') . '/' . $file_name . '.log';
        $myfile = fopen($file,'a+');
        fwrite($myfile, $log_level.$log_message);
        fclose($myfile);
        return [
    'status'=>true
        ];
    
    
    }
    public function show($domain){
    if (!file_exists(storage_path('logs').'/'.$domain.'.log')) {
    return [
    'status'=>false
            ];
        }else{
    return file_get_contents(storage_path('logs').'/'.$domain.'.log');
        }
    }
    Bunları Yaptıktan sonra a sitesinden post attıkça asitedisomain.com şekilinde log dosyası yoksa oluşturacak ve içerisine sizin gönderdiğiniz veriyi yazdıracak.
    Peki bunu yaptık datayı nasıl okuyacağız ?
    o da çok basit ister post atın istersenizde get ile şu url adresini ziyaret edin.
    bsitesidomain.com.tr/api/log/show/asitedomain.com

    Vaktim olmadığı için test etmedim aklımda canlanan ilk yöntemi paylaşmak istedim. Belki ihtiyacı olan birine faydası dokunur.

    Ve son olarak elinize sağlık @yazilimdukkanim; hocam beni de şevklendirdiniz
  • 02-12-2022, 20:09:31
    #5
    WebKedi adlı üyeden alıntı: mesajı görüntüle
    Başlığı görünce yardıma ihtiyaç var sanıp yardım etmeye gelmiştim, başlıktan anladığımı anlatayım ilk önce
    Api ile laravel bir sisteme bağlanıp , bağlanılan sistemde log dosyası oluşturma işlemi nasıl yapılır ?
    Şimdi bu sorunun cevabını anlatayım.
    A sitemiz farklı bir script olsun. B sitemiz ise laravel
    A sitesinden post yöntemi ile göndermeniz gerekenler şunlar ;
    [
    'log_level'=>'error/info/success',
    'log_message'=>'Bu bir log mesajıdır',
    'log_key'=>'asitesidomaini.com.tr'
    ]
    Åžimdi bunu B sitesinde bsitesidomanini.com.tr/api/log/create linkine post ettik.
    B sitesinde kurulu olan laravel scriptimize gelip routes/api.php dosyasını açıp şu kodu ekliyoruz.
     Route::group(['prefix' => '/log', 'as' => 'log.'], function () {
                Route::post('/create', ['as' => "create", 'uses' => "LogController@create"]);
                Route::any('/show/{log_key}', ['as' => "show", 'uses' => "LogController@show"]);
            });
    Bunlar bizim rotalarımızdı. Şimdi terminal aracılığıyla php artisan optimize diyerek bir optimize edelim ki rotamız çalışır vaziyete gelsin.
    Bu işlemi yaptıktan sonra sıra geldi controllerı oluşturup apiyi yaratmaya başlıyoruz.
    Adım 1: terminale "php artisan make:controller Api/LogController" yazıyoruz
    Adım 2: app/Http/Controllers/Api/LogController dosyamızı açıp şu fonksiyonları ekliyoruz

    public function create(Request $request){
    
    $log_level ='['.date('d-m-Y H:i:s').'] production.'. $request->log_level.': ';
       $log_message = '\n'.$request->log_message;
        $file_name = $request->log_key;
        if (!file_exists(storage_path('logs').'/'.$file_name.'.log')) {
    touch(storage_path('logs') . '/' . $file_name . '.log');
        }
    $file= storage_path('logs') . '/' . $file_name . '.log';
        $myfile = fopen($file,'a+');
        fwrite($myfile, $log_level.$log_message);
        fclose($myfile);
        return [
    'status'=>true
        ];
    
    
    }
    public function show($domain){
    if (!file_exists(storage_path('logs').'/'.$domain.'.log')) {
    return [
    'status'=>false
            ];
        }else{
    return file_get_contents(storage_path('logs').'/'.$domain.'.log');
        }
    }
    Bunları Yaptıktan sonra a sitesinden post attıkça asitedisomain.com şekilinde log dosyası yoksa oluşturacak ve içerisine sizin gönderdiğiniz veriyi yazdıracak.
    Peki bunu yaptık datayı nasıl okuyacağız ?
    o da çok basit ister post atın istersenizde get ile şu url adresini ziyaret edin.
    bsitesidomain.com.tr/api/log/show/asitedomain.com

    Vaktim olmadığı için test etmedim aklımda canlanan ilk yöntemi paylaşmak istedim. Belki ihtiyacı olan birine faydası dokunur.

    Ve son olarak elinize sağlık @yazilimdukkanim; hocam beni de şevklendirdiniz
    rica ederim fakat siz başka türlü birşey anlatmışsınız yinede teşekkürler yinede faydalı olunacağını düşünüyorum..