Rumah > rangka kerja php > Laravel > Mengapa log yang dihasilkan oleh laravel tidak mempunyai kebenaran?

Mengapa log yang dihasilkan oleh laravel tidak mempunyai kebenaran?

PHPz
Lepaskan: 2023-04-12 09:54:44
asal
740 orang telah melayarinya

Laravel ialah rangka kerja PHP yang digunakan secara meluas yang menyediakan fungsi dan alatan yang kaya untuk membolehkan pembangun membina aplikasi web yang selamat, boleh dipercayai dan mudah diselenggara dengan cepat. Fungsi pengelogan terbina dalam Laravel membolehkan pembangun menyimpan log aplikasi yang menjalankan ke fail untuk analisis dan penyelesaian masalah. Walau bagaimanapun, dalam beberapa kes, fail log yang dijana oleh Laravel mungkin menghadapi masalah kebenaran dan gagal untuk dikeluarkan dengan betul.

Sebab Laravel menjana fail log tanpa kebenaran ialah kebenaran lokasi storan fail tidak mencukupi. Untuk menyelesaikan masalah ini, kami boleh menggunakan kaedah berikut:

  1. Laraskan kebenaran lokasi storan

Secara lalai, fail log Laravel disimpan dalam direktori storan/log . Kita perlu memastikan bahawa kebenaran pada direktori adalah mencukupi untuk membolehkan proses PHP menulis dan membaca daripada direktori. Anda boleh melaksanakan arahan berikut dalam terminal untuk menetapkan kebenaran direktori:

chmod -R 775 storage/logs
Salin selepas log masuk

Tetapan kebenaran 775 membenarkan pemilik dan pengguna kumpulan membaca, menulis dan melaksanakan direktori, dan pengguna lain hanya boleh baca dan laksanakan.

  1. Tukar lokasi storan log Laravel

Jika kami tidak mahu menggunakan lokasi storan lalai, kami boleh mengubah suai lokasi storan melalui fail konfigurasi. Buka fail config/logging.php, cari pilihan laluan dalam log dan ubah suainya kepada laluan storan yang ditentukan.

'log' => env('APP_LOG', 'single'),
    'path' => '/your/folder/path/logs/laravel.log',
    'level' => env('LOG_LEVEL', 'debug'),
    'channels' => [
        // ...
    ],
Salin selepas log masuk
  1. Tangkap log Laravel dan simpannya ke dalam pangkalan data

Kami boleh menangkap dan menyimpan log Laravel ke dalam pangkalan data dan bukannya fail. Kaedah ini boleh mengelakkan masalah kebenaran fail dan memudahkan analisis log dan statistik.

Kita perlu melakukan operasi berikut:

  • Buat jadual log dalam pangkalan data untuk menyimpan data log; fail Daftarkan pelaksanaan antara muka log;
  • Ubah suai konfigurasi dalam fail config/logging.php dan tetapkan pilihan log kepada pangkalan data.
  • Langkah pertama, buat jadual log

Langkah kedua, daftar AppServiceProvider
CREATE TABLE `logs` (
    `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    `channel` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    `level` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    `message` text COLLATE utf8mb4_unicode_ci NOT NULL,
    `context` text COLLATE utf8mb4_unicode_ci NOT NULL,
    `extra` text COLLATE utf8mb4_unicode_ci NOT NULL,
    `created_at` datetime(6) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Salin selepas log masuk

Tambahkan yang berikut dalam app/Providers/AppServiceProvider.php Kod fail :

Langkah ketiga ialah mengubah suai fail config/logging.php
use Illuminate\Support\Facades\Log;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;

public function boot()
{
    $logger = new Logger('laravel');
    $logger->pushHandler(new StreamHandler(storage_path('logs/laravel.log'), Logger::DEBUG));

    Log::listen(function ($level, $message, $context) use ($logger) {
        $logger->$level($message, $context);
    });
}
Salin selepas log masuk

Ubah suai juga konfigurasi dalam fail config/logging.php dan tetapkan pilihan log kepada pangkalan data:

Tiga kaedah di atas boleh membantu pembangun menyelesaikan masalah tiada kebenaran untuk fail log yang dijana oleh Laravel Kaedah ketiga juga boleh membenarkan pembangun mengurus dan menganalisis maklumat log aplikasi dengan lebih baik.
'log' => 'database',
'channels' => [
        // ...
    ],
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa log yang dihasilkan oleh laravel tidak mempunyai kebenaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan