2015-08-23 29 views
7

Tôi đang sử dụng Laravel 5.1 và cố gắng đặt logic đăng nhập khác nhau cho môi trường phát triển và sản xuất.Laravel 5 cấp độ nhật ký khác nhau để phát triển và sản xuất

suốt ứng dụng của tôi Tôi đang sử dụng Log mặt tiền với hầu hết các phương pháp khác nhau như sau:

Log::emergency($error); 
Log::alert($error); 
Log::critical($error); 
Log::error($error); 
Log::warning($error); 
Log::notice($error); 
Log::info($error); 
Log::debug($error); 

Tuy nhiên, trong môi trường sản xuất của tôi, tôi muốn chỉ đăng nhập bất cứ điều gì đó là một Error, Critical, Alert hoặc ưu tiên thấp hơn Emergency và bỏ qua các yêu cầu đăng nhập có mức độ ưu tiên thấp hơn.

Tôi không thể tìm thấy bất kỳ thứ gì trong tài liệu hoặc bằng cách khám phá mã (cả Log mặt tiền và lớp Monolog).

Suy nghĩ hiện tại của tôi là tạo một trình bao bọc tùy chỉnh xung quanh mặt tiền Nhật ký mà chỉ cần kiểm tra môi trường và bỏ qua bất kỳ điều gì dưới 400 (mức Monolog cho Lỗi). Về cơ bản tôi sẽ tạo ra một biến ngưỡng trong tập tin môi trường và bất cứ điều gì dưới đây nó sẽ chỉ đơn giản là không được đăng nhập vào các tập tin.

Trước khi làm như vậy, tôi muốn hỏi cộng đồng xem có phương pháp/cấu hình hiện có nào mà tôi có thể sử dụng không, để tôi không phát minh lại bánh xe.

Nếu không - cách tiếp cận tốt nhất là gì?

+0

Bạn đang sử dụng trình ghi nhật ký nào? "duy nhất", "hàng ngày", "syslog" hoặc "errorlog"? Thật không may giải pháp phụ thuộc vào logger được sử dụng. –

+0

@ jedrzej.kurylo Tôi đang sử dụng 'Daily' – Yani

Trả lời

4

gist hiển thị câu trả lời thoải mái hơn, vì không phụ thuộc vào trình xử lý được chọn là .

Tôi chỉ cung cấp phần thiết yếu trong câu trả lời ở đây trong trường hợp liên kết trên bị xóa trong một thời gian.

Trong phương pháp đăng ký của AppServiceProviders:

/** 
* Register any application services. 
* 
* @return void 
*/ 
public function register() 
{ 
    // 
    $monolog = Log::getMonolog(); 
    foreach($monolog->getHandlers() as $handler) { 
     $handler->setLevel(Config::get('app.log-level')); 
    } 
} 

Sau đó, chỉ cần thêm một chìa khóa bổ sung cho cấu hình của bạn/app.php:

'log-level' => 'info', // or whatever minimum log level you would like. 
2

Thêm mã sau đây để AppServiceProvider bạn :: đăng ký():

$this->app->configureMonologUsing(function ($monolog) { 
    $monolog->pushHandler(
    $handler = new RotatingFileHandler(
     $this->app->storagePath() . '/logs/laravel.log', 
     $this->app->make('config')->get('app.log_max_files', 5), 
     $this->app->make('config')->get('app.level', 'debug') 
    ) 
); 

    $handler->setFormatter(new LineFormatter(null, null, true, true)); 
}); 

này tái logic rằng Laravel làm khi thiết lập hàng ngày xử lý, nhưng cho biết thêm qua mức đến xử lý.

Bạn có thể thiết lập mức tối thiểu đăng nhập của bạn bằng cách thiết lập giá trị mức trong cấu hình của bạn/app.php:

'level' => 'debug', //debug, info, notice, warning, error, critical, alert, emergency 

Đây là một chút của một workaround và từng loại hình xử lý sẽ cần phải được thiết lập riêng. Tôi hiện đang xử lý yêu cầu kéo tới Laravel có thể thêm mức gỡ lỗi tối thiểu cài đặt từ tệp cấu hình mà không cần viết một dòng mã trong AppServiceProvider của bạn.

Đoạn mã trên chưa được kiểm tra, vì vậy hãy cho tôi biết nếu bạn thấy bất kỳ lỗi chính tả nào đó không hoạt động đúng cách và tôi sẽ rất sẵn lòng làm việc đó cho bạn.

+0

Có vấn đề với việc ghi nhật ký L5 (trên Linux) trong đó, nếu bạn chạy' artisan' từ dòng lệnh ** chứ không phải là * người dùng web *, một tệp nhật ký có thể được tạo mà không thể được ghi bởi máy chủ web *. Tôi đã đệ trình một yêu cầu kéo sửa chữa vấn đề nhưng được yêu cầu sử dụng 'configureMonologUsing()' để thay thế. Vì vậy, hãy lưu ý và 'chmod' các tệp nhật ký của bạn trong đó. ;) – lucifurious

Các vấn đề liên quan