我如何找到Apache将日志文件保存在哪里?


11

我需要找到Apache在哪里保存网站的访问和错误日​​志

我有权访问托管有数十个站点的服务器。我正在尝试调试这些站点之一。当我浏览该网站时,它不会显示在/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/

6
这不是重复,OP已将问题本身与建议的重复项链接在一起,并明确指出/var/log/apache2/access.log该重复项所暗示的信息不在其中。
terdon

尝试sudo lsof -nP -c apache2 -c httpd | grep -i log
斯特凡Chazelas

Answers:


5

您可以从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"

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

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

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

     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
  3. 错误日志在这里。

     -D DEFAULT_ERRORLOG="logs/error_log"
    

    注: 这一次可能是在第一,但在Red Hat发行版有点混乱存在,往往是在这个目录下取得,链接/etc/httpdlogs

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


1
httpd -V命令在Debian 9上不起作用
Christia

试试apache2 -V
Draex_

3

在您的apache配置中查找字符串ErrorLog

通常,Apache进程本身就有一个。每个VirtualHost也可以定义自己的日志文件,因此也请对其进行检查。

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


1
/etc/apache2# rgrep "ErrorLog" .显示数十个指定的配置文件${APACHE_LOG_DIR}/error.sitename.log,但这不是其中之一。/etc/apache2# rgrep "LogLevel" .仅获取一些默认文件。
那个巴西人2014年

2
在Debian ${APACHE_LOG_DIR}/var/log/apache2默认定义为。检查/etc/defaults/apache2是否已更改。
bahamat 2014年

如果没有LogLevel为特定的VirtualHost设置任何设置,则可以添加一个。
bahamat 2014年

1

我刚找到一个/etc/apache2/conf.d/other-vhosts-access-log包含

# Define an access log for VirtualHosts that don't define their own logfile
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined

看起来这是一种将来自虚拟主机的所有日志合并到一个文件中的方法。我已经检查过,并且访问记录在那里。

来源

在该站点的配置文件上插入ErrorLog和AccessLog指令为我提供了单独的日志文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.