如何找到 Apache 保存日志文件的位置?

Tha*_*Guy 13 logs debian apache-httpd

我需要找到Apache 保存站点访问和错误日​​志的位置。

我对托管了数十个站点的服务器具有 root 访问权限。我正在尝试调试其中一个站点。当我浏览网站时,它没有显示在/var/logs/apache2/access.log或 上/var/logs/apache2/error.log。(文件就在那里,其他站点也会登录这些文件。事实上,有数百个不同的日志文件)。

既没有locate httpd.log也没有find . -iname httpd.log执行/任何结果。

该站点的apache配置是:

ServerName REDACTED.com.br
DocumentRoot /var/www/xyz/wiki
AssignUserId xyz_wiki xyz_wiki

<Directory /var/www/xyz/wiki/data>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/conf>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/bin>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/inc>
order allow,deny
deny from all
</Directory>

php_admin_value open_basedir /var/www/xyz/wiki/:/mnt/vdImagem/www/xyz/wiki/
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 7

您可以从 Apache 的日志文件中查询他的信息,但通常最好从实际的可执行文件中查询这些信息。解析日志可能很棘手,如果您不太熟悉如何在盒子上完成特定设置,您可能会犯错误。

httpd -V

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
Run Code Online (Sandbox Code Playgroud)

您要查看的关键项目如下。

  1. 这会告诉您 Apache 将引用的所有文件从“根”目录开始:

     -D HTTPD_ROOT="/etc/httpd"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 配置文件被定义,从这里开始。请注意,此路径是相对于 #1 中提到的路径,因此它将是/etc/httpd/conf/httpd.conf.

     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 错误日志在这里。

     -D DEFAULT_ERRORLOG="logs/error_log"
    
    Run Code Online (Sandbox Code Playgroud)

    注意: 这个一开始可能有点混乱,但在 Red Hat 发行版上,这个目录中经常有一个链接,/etc/httpd称为logs.

    $ ls -ld /etc/httpd/logs
    lrwxrwxrwx. 1 root root 19 Jul  9  2012 /etc/httpd/logs -> ../../var/log/httpd
    
    Run Code Online (Sandbox Code Playgroud)
  4. Apache 可能使用的其他日志文件将在配置文件中进一步定义/etc/httpd/conf/httpd.conf

  • 尝试“apache2 -V” (2认同)

小智 6

我无法从其他答案中得到任何命令来找到我的价值。我最终通过跑步找到了我需要的东西less /etc/apache2/envvars

  • 这次真是万分感谢; 对我来说,对你的稍作调整就满足了我的需要;`cat /etc/apache2/envvars | grep LOG`. 这在路径上显示了“$SUFFIX”。根据 https://serverfault.com/a/558295/137255,该值通常为空,除非同一主机上有多个 apache 实例。 (2认同)

bah*_*mat 3

在您的 apache 配置中查找 string ErrorLog

通常 Apache 进程本身就有一个。每个虚拟主机还可以定义自己的日志文件,因此也请检查这些文件。

如果 VirtualHost 没有定义自己的日志文件,那么它将使用全局配置中指定的日志文件。如果您认为已找到正确的日志文件,但没有看到所需的信息,请尝试增加LogLevel.

  • 在 Debian 上,“${APACHE_LOG_DIR}”默认定义为“/var/log/apache2”。检查“/etc/defaults/apache2”以查看它是否已更改。 (3认同)