带有日志文件的Apache别名

带有日志文件的Apache别名,apache,Apache,我想知道是否有可能在Apache中的虚拟主机上创建一个带有日志的别名 这就是我到目前为止所做的: <VirtualHost www.mycompany.com> ServerName www.mycompany.com DirectoryIndex Company_Home.html ServerAdmin siasagenbag@mycompany.com DocumentRoot C:/Project/Sites/Company/Main/htdo

我想知道是否有可能在Apache中的虚拟主机上创建一个带有日志的别名

这就是我到目前为止所做的:

<VirtualHost www.mycompany.com>
    ServerName www.mycompany.com
    DirectoryIndex Company_Home.html
    ServerAdmin siasagenbag@mycompany.com
    DocumentRoot C:/Project/Sites/Company/Main/htdocs
    ErrorLog C:/Project/Sites/Company/Main/logs/Error_log.log
    TransferLog C:/Project/Sites/Company/Main/logs/Access_log.log
    Alias /public C:/Project/Sites/Company/Sub/Public/htdocs/Public.html
    Alias /stage C:/Project/Sites/Company/Sub/Stage/htdocs/Stage.html
    Alias /development C:/Project/Sites/Company/Sub/Development/htdocs/Development.html

服务器名www.mycompany.com
目录索引公司_Home.html
服务器管理员siasagenbag@mycompany.com
DocumentRoot C:/Project/Sites/Company/Main/htdocs
ErrorLog C:/Project/Sites/Company/Main/logs/Error\u log.log
传输日志C:/Project/Sites/Company/Main/logs/Access\u log.log
别名/public:/Project/Sites/Company/Sub/public/htdocs/public.html
别名/stage C:/Project/Sites/Company/Sub/stage/htdocs/stage.html
别名/development C:/Project/Sites/Company/Sub/development/htdocs/development.html

我想在所有3个别名上创建访问和错误日志。

不可能使用文件名,因为指令
ErrorLog
TransferLog
都是服务器或虚拟主机级别,因此无法为特定别名指定

但是,您可能可以通过使用apache将日志通过管道传输到的进程来获得所需的行为,例如:

ErrorLog |C:/Project/Sites/Company/error_logger.exe
TransferLog |C:/Project/Sites/Company/transfer_logger.exe
每个程序都将由apache启动,并在其标准输入上接收日志行。您可以在程序中自由地使用这些字符串执行任何操作

这里要解决的主要问题是强制日志格式包含别名信息,以便程序可以将正确的日志行重定向到相应的文件

TransferLog很容易获得此信息,因为它将作为正在记录的URL的前导部分(日志格式中的(%U标志))可用

对于错误日志来说,这要困难得多,甚至可能是不可能的,因为各种模块(如PHP)可以生成完全缺少URL信息的错误消息

编辑:


作为记录,Apache 2.3.9引入了一个新的指令,允许大量定制错误日志行,但是,%U标志出乎意料地不存在,因此在这里对您没有帮助。

哦,好的,这正是我想要的,谢谢小天狼星