Soru Apache Hata günlüğüne “URL” eklendiğinde


PHP'nin Gigabyte'lar için bellek istediği "PHP ile bitmiş izin veriliyor" alıyoruz. Hangi URL'ye eriştiğini görmek için Apache hata günlüğünü nasıl biçimlendirebilirim?


6
2018-05-26 06:53


Menşei




Cevaplar:


debian apache2.conf varsayılan dosyasından alınmıştır:

# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Görmek Apache 2 Kılavuzu Farklı formatta işaretlerin anlamı için% veya Apache 2 Manual ErrorlogFormat Yönergesi Apache 2.4'den beri hata kaydının belirli bir formatta olması için.

Kısacası :

Ana yapılandırma dosyanızdaki çıkış formatını ve çıktı dosyasını VirtualHost Direktifi'nde örneğin vhost başına tanımlayın. İsterseniz, ana dosyanızdaki tüm siteleriniz için yapılandırma dosyasını tanımlayabilirsiniz.

Eklemek için gerekli bir şey (henüz orada değil durumda):

    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ErrorLog /var/log/apache2/error.log

Tam kurulumunuza bağlı olarak, konumu biraz değiştirmek isteyebilirsiniz.

Yüksek bir trafik siteniz varsa bunları günlüğe kaydetmeyi unutmayınız.

Normalde bu, (en azından debian olarak) onu nasıl hatırladığım için varsayılan ayar olmalıdır.

Boş günlükleriniz varsa, klasör / dosyaların izinlerini kontrol etmek isteyebilirsiniz, böylece apache2 işleminin altında çalışan kullanıcı onlara erişebilir ve yazabilir.

Yapılandırma dosyalarını yeniden okumak için gerekli olan sürecin yeniden yüklenmesinin (bildiğim kadarıyla) olduğunu hatırlayın.


4
2018-05-26 08:31



Ayrıca, Apache 2.4'ün ErrorLog için özel olarak değiştirmek için "ErrorLogFormat" yönergesine sahip olduğunu da keşfetti. - Rishav
bilmek güzel, bilgi için teşekkürler, yorumunuzu dahil etmek için cevabı değiştirdim. - Dennis Nolte
Hata günlüğüne bakarken bunun nasıl yardımcı olacağını anlamıyorum. Hangi URL'nin istendiğini belirlemek için, IP ve zaman gibi hata günlüğündeki bilgileri erişim günlüğüne eşleştirmeniz gerekir. - jla


Kabul edilen cevap, asıl soruya access.log'a yazdığı ve error.log'a kayıt olmadığı için cevap vermiyor.

url'yi bir ortam değişkenine koymanız ve ardından ErrorLogFormat'tan şu şekilde çağırmanız gerekir:

SetEnvIf Request_URI "(^.*$)" RURI=$1
ErrorLogFormat "%{cu}t %a %l %M URI:%{RURI}e"

6
2017-08-14 04:02



Bunu apache2.conf ve configtest sais onun için eklemeye çalıştı. Invalid command 'ErrorLogFormat', perhaps misspelled or defined by a module not included in the server configuration Action 'configtest' failed. - user1888089
@eichertc ErrorLogFormat => Apache 2.4, muhtemelen 2.2 var - Rudie


Aynı sorunu aldım. Hata günlüğüne baktığınızda ve hangi URL'yi tetiklediğini bilmek istediğinizde.

  1. ErrorLogFormat sadece Apache 2.4'te kullanılabilir

  2. Özel günlük ve hata günlüğü için günlük belirteci farklıdır, özel günlük belirtecini kullanamaz ve ErrorLogFormat içine koyamazsınız.

    ErrorLogFormat belirteci: https://httpd.apache.org/docs/2.4/mod/core.html#errorlogformat

    CustomLog belirteci: https://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats

  3. Değişkeni kullanmak ve ErrorLogFormat içine koymak mümkün olabilir, ancak kendi testlerim için çalışmasını sağlayamadım.

    Örneğin.
    SetEnvIf Request_URI "(^. * $)" RURI = 1 ABD doları
    SetEnvIf QUERY_STRING "(^. * $)" QSTRING = 1 TL
    ErrorLogFormat "% t [URI:% {RURI} e] [QSTRING:% {QSTRING} e]% M"
  1. Sonunda, "doğru" yöntemin, token LogID'yi kullanması ve CustomLog'dan referans alması gerektiği ortaya çıkıyor.
    Örneğin.
    LogFormat "[LogID:% L]% t \"% r \ "% h" özel-ile-id
    ErrorLogFormat "[LogID:% L]% t% M"

Umarım yardımcı olur


0
2018-06-02 04:06