CodeIgniter'da (PHP) hata günlüğü nasıl yapılır


95

PHP CodeIgniter'da hata günlüğü istiyorum. Hata günlüğünü nasıl etkinleştiririm?

Birkaç sorum var:

  1. Bir hatayı kaydetmek için tüm adımlar nelerdir?
  2. Bir hata günlüğü dosyası nasıl oluşturulur?
  3. Hata mesajını günlük dosyasına nasıl gönderebilirim (bir hata oluştuğunda)?
  4. Bu hatayı bir e-posta adresine nasıl e-postayla gönderirsiniz?

Yanıtlar:


183

CodeIgniter'da yerleşik bazı hata günlüğü işlevleri vardır.

  • Senin Make / uygulama / günlükleri klasör yazılabilir
  • Gelen /application/config/config.php sette
    $config['log_threshold'] = 1;
    Günlüklerinize istiyorum ne kadar ayrıntı bağlı yüksek bir sayı kullanabilir veya
  • Kullanım log_message('error', 'Some variable did not contain a value.');
  • Bir e-posta göndermek için temel CI_Exceptions sınıfı yöntemini genişletmeniz gerekir log_exceptions(). Bu kendiniz yapmak veya kullanabilir bu . Çekirdeği genişletme hakkında daha fazla bilgi burada

Bkz. Http://www.codeigniter.com/user_guide/general/errors.html


Bunun herhangi bir güvenlik etkisi var mı?
Aakil Fernandes

Bu, veriyi dosya adı log- [Ymd H: i: s] biçiminde olan bir php dosyasına veya yapılandırma dosyanızda tanımlanan log_date_format anahtar yapılandırmasında hangi değerin ayarlandığını belirtir. Hassas verileri günlüğe kaydetmediğiniz / dökmediğiniz sürece oldukça güvenli olmalıdır. Bu dosya varsayılan olarak bir index.html sayfasıyla ilişkilidir, bu nedenle açıkça oluşturulan php dosyalarına herkesin erişemeyeceği açıktır - ancak asla bilemezsiniz. Varsayılan application / logs dizinini değiştirirseniz, tüm bu önlemleri aldığınızdan emin olun.
Vincent Edward Gedaria Binua

7
Bana yardımcı olan / application / logs klasörünüzü yazılabilir yapın <<<
Sergey Grechin

1
"$ Config ['log_threshold'] = 1;" ayarladığımda, / application / logs klasörümde herhangi bir günlük almadım. Ancak "$ config ['log_threshold'] = 3" ayarladığımda bir günlük dosyası belirdi. Bu yardımcı olur umarım. Teşekkür ederim! Barış.
masarapmabuhay

25

Sunucunun hata günlüğüne bir satır koymak için PHP'nin error_log () işlevini kullanın. Ancak, bu yöntem bir e-posta göndermez.

İlk olarak, bir hatayı tetiklemek için:

trigger_error("Error message here", E_USER_ERROR);

Varsayılan olarak bu, sunucunun hata günlüğü dosyasına gider. Apache için ErrorLog yönergesine bakın . Kendi günlük dosyanızı ayarlamak için:

ini_set('error_log', 'path/to/log/file');

Seçtiğiniz günlük dosyasının zaten var olması ve sunucu işlemi tarafından yazılabilir olması gerektiğini unutmayın. Dosyayı yazılabilir yapmanın en basit yolu, sunucu kullanıcısını dosyanın sahibi yapmaktır. (Sunucu kullanıcısı, işletim sistemi dağıtımınıza bağlı olarak hiç kimse, _www, apache veya başka bir şey olabilir.)

Hatayı e-posta ile göndermek için özel bir hata işleyici kurmanız gerekir:

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

Daha fazla bilgi için lütfen ilgili PHP belgelerine bakın.


3

Ayrıca, kod işaretleyicinin istediğiniz mesaj türlerini bir yapılandırma dosyasında kaydetmesine izin verdiğinizden emin olun.

yani $config['log_threshold'] = [log_level ranges 0-4];



0
In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';

Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.