Apache2 Apache服务器--多个目录,不同的错误日志

Apache2 Apache服务器--多个目录,不同的错误日志,apache2,error-log,Apache2,Error Log,我在/var/www(比如/var/www/app1和/var/www/app2)中有两个目录,我希望将它们的错误日志发送到不同的文件。两者都在同一个域下,所以我认为不能将它们放在不同的虚拟主机下。例如,我可以通过以下方式访问它们: 我看到了这一页: 其解决方案对访问日志非常有效。但是,“env”参数似乎不适用于ErrorLog指令 在这个“发现”之前,我一直在做这个,这似乎是错误的: <VirtualHost *:80> ServerAdmin ray@localhost

我在/var/www(比如/var/www/app1和/var/www/app2)中有两个目录,我希望将它们的错误日志发送到不同的文件。两者都在同一个域下,所以我认为不能将它们放在不同的虚拟主机下。例如,我可以通过以下方式访问它们:

我看到了这一页:

其解决方案对访问日志非常有效。但是,“env”参数似乎不适用于ErrorLog指令

在这个“发现”之前,我一直在做这个,这似乎是错误的:

<VirtualHost *:80>
  ServerAdmin ray@localhost

  DocumentRoot /var/www/app1

  <Directory />
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    allow from all
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/app1/error.log

  LogLevel warn

  CustomLog ${APACHE_LOG_DIR}/app1/access.log combined
</VirtualHost>

服务器管理员ray@localhost
DocumentRoot/var/www/app1
选项索引跟随符号链接多视图
不允许超限
命令拒绝,允许
通融
ErrorLog${APACHE_LOG_DIR}/app1/error.LOG
日志级别警告
CustomLog${APACHE_LOG_DIR}/app1/access.LOG组合

我有点不知所措,不知道该做什么。也就是说,如果有某种方法可以让ErrorLog正常工作,或者我应该继续尝试为每个目录配置虚拟主机。任何帮助都将不胜感激!谢谢大家!

为什么在
VirtualHost
上下文中为
/
设置
目录
选项?使用
而不是


由于其上下文是
服务器配置,虚拟主机
——这意味着只能为整个服务器或
虚拟主机
定义错误日志,而不能为
目录
定义错误日志。因此,如果要将不同的日志发送到不同的文件,请尝试使用
setenif
设置Env变量。根据您所在的目录,它应该类似于
setenif Request\u URI^\/a1\/a1
setenif Request\u URI^\/a2\/!a1
。然后根据
a1
环境变量编写日志。

最后,我做到了,首先为每个文件夹创建内部子域,并使用proxypass传递子域内容

启用apache mods:

a2enmod authz_core dir proxy proxy_http
/etc/hosts

127.0.0.1       localhost
127.0.0.1       a.localhost
127.0.0.1       b.localhost
/etc/apache2/sites available/default.conf

<VirtualHost *:80>
        ServerName localhost
        ServerAdmin fake@mail.com
        DocumentRoot "/dev/null"

        ProxyPass /a http://a.localhost/
        ProxyPassReverse /a http://a.localhost/
        ProxyPass /b http://b.localhost/
        ProxyPassReverse /b http://b.localhost/

        LogLevel debug

        ErrorLog ${APACHE_LOG_DIR}/default-error.log
        CustomLog ${APACHE_LOG_DIR}/default-access.log combined

</VirtualHost>
<VirtualHost *:80>
        ServerName a.localhost
        ServerAdmin fake@mail.com
        DocumentRoot "/Publikoa/a"

        <Directory "/Publikoa/a">
                DirectoryIndex index.html
                Require all granted
        </Directory>

        LogLevel debug

        ErrorLog ${APACHE_LOG_DIR}/a-error.log
        CustomLog ${APACHE_LOG_DIR}/a-access.log combined

</VirtualHost>
<VirtualHost *:80>
        ServerName b.localhost
        ServerAdmin fake@mail.com
        DocumentRoot "/Publikoa/b"

        <Directory "Publikoa/b">
                DirectoryIndex index.html
                Require all granted
        </Directory>

        LogLevel debug

        ErrorLog ${APACHE_LOG_DIR}/b-error.log
        CustomLog ${APACHE_LOG_DIR}/b-access.log combined

</VirtualHost>
重新启动apache:

/etc/init.d/apache2 restart

为每个目录设置自定义ID,您可以按如下目录分隔日志:

<Directory app1>
    SetEnv app1
</Directory>
<Directory app2>
    SetEnv app2
</Directory>
CustomLog ${APACHE_LOG_DIR}/site1.log combined env=subwebsite1
CustomLog ${APACHE_LOG_DIR}/site2.log combined env=subwebsite2

SetEnv app1
SetEnv app2
CustomLog${APACHE\u LOG\u DIR}/site1.LOG组合env=子网站1
CustomLog${APACHE\u LOG\u DIR}/site2.LOG组合env=子网站2

感谢您纠正我的“目录”错误!至于错误日志,我确实了解了环境如何分离访问日志。但它似乎不适用于错误日志。我的理解正确吗?(当我尝试时,我在Apache解析配置文件时出错。)我想你是对的——错误日志是针对整个服务器或虚拟主机的。根据您发送的链接,我认为另一个选项是将每个错误日志条目通过管道传输到脚本。。。非常感谢你的帮助!是的,我也搜索过了,似乎错误日志文件不能与setenif分开。不客气。我也有同样的问题,我正在寻找解决方案,我认为通过每个文件夹创建一个virtualhost并在内部代理可能有效,这只是一个理论:D例如:显示
<Directory app1>
    SetEnv app1
</Directory>
<Directory app2>
    SetEnv app2
</Directory>
CustomLog ${APACHE_LOG_DIR}/site1.log combined env=subwebsite1
CustomLog ${APACHE_LOG_DIR}/site2.log combined env=subwebsite2