Support the ongoing development of Laravel.io →
Eloquent IOC Architecture

I have to create separate log files for the companies Laravel 5. I have already done this in Laravel by just putting my logic in global.php file. This makes it easy to trace the errors if a specific company admin puts a complaint. Anyway, in Laravel 5 the whole structure is changed for the framework.

I've tried to override Illuminate\Foundation\Bootstrap\ConfigureLogging class in app/bootstrap directory. Every thing is going fine but when I try to get Company::find($id);, which I needed there, Laravel thrown error Call to a member function connection() on null which means I'm trying to use Laravel services before they get started.

So, I used mysqli PHP library to get company name. Now it's working fine. But somehow I want to use Eloquent instead of mysqli. But don't know how can I use Eloquent in other words starting Laravel Services in such scenarios.

Here is my code:

$companyId = isset($_COOKIE['companyId'])?$_COOKIE['companyId']:null;

if(!(is_null($companyId))){
    $today = date('d-m-Y');
    if(!file_exists(storage_path().'/logs/'.$today)){
        // I've created the Filesystem instance as File Facade was not working here.
        $file = new Filesystem;
        $file->makeDirectory(storage_path(). '/logs/' . $today, 0777);
    } // No problem till here

    // I need to get company name from db and want to use the following two lines But...
    $company = Company::find($id);  
    $companyName = str_replace(' ', '_', $company->name).'_'.$companyId;
    // ... as laravel services are not yet started I have to use the  following mysqli block (13 lines) from mysqli_connect() to mysqli_close()

    // ENDING MYSQLI BLOCK
        $link = mysqli_connect('localhost', 'root', 'pass', 'myDb', '3306');
        if (!$link) {
            die('Could not connect to MySQL: ' . mysqli_connect_error());
        }
        mysqli_query($link, 'SET NAMES \'utf8\'');
        $sql = 'SELECT name FROM companies WHERE id='.$companyId;
        $result = mysqli_query($link, $sql);
        if(mysqli_num_rows($result) > 0){
            while($row = mysqli_fetch_assoc($result)){
                $companyName = $row['name'];
            }
        }
        mysqli_close($link);
    // ENDING MYSQLI BLOCK

    $log->useDailyFiles(storage_path().'/logs/'.$today.'/'.$companyName.'.log', $app->make('config')->get('app.log_max_files', 5));
}elseif(is_null($companyId)){
    $log->useDailyFiles(storagePath().'/logs/laravel.log', $app->make('config')->get('app.log_max_files', 5));
}

Should I change Logging behavior in any other way i.e. using Service Providers or something else? Please help me in this regard.

Last updated 3 years ago.
0

Sign in to participate in this thread!

PHPverse

Your banner here too?

mkhuramj mkhuramj Joined 13 Apr 2015

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.