我已将 Subversion 作为 Apache 模块安装,它已设置好并且工作正常。唯一的问题是我将所有 SVN 内容(例如 PROPFIND、OPTIONS 等)记录到与正常 Web 访问相同的 .LOG 文件中。我试图弄清楚如何让 SVN 模块向自定义日志文件报告。
这是加载 SVN 模块的 Apache conf 文件的一部分。我尝试使用 CustomLog 指令(如底部所示)来执行此操作,但这不起作用。
################################################
#Subversion modules
LoadModule dav_svn_module "C:/SVN/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/SVN/bin/mod_authz_svn.so"
# Configure Subversion repository
# This configures Apache so that all your Subversion repositories
# are available at http://myserver/svn/[repositoryName]
# The access is restricted to known users/passwords.
<Location /svn/>
DAV svn
SVNIndexXSLT "/svnindex.xsl"
SVNParentPath "C:/SVNRep/Repository/"
SVNListParentPath on
# SVNPath "C:/SVNRep/Repository/" #for single repository
SVNPathAuthz off
# SVNMasterURI http://localhost/svn/ #for write-through proxying
AuthType Basic
AuthName "My Subversion repositories"
AuthUserFile "C:/SVNRep/passwd"
Require valid-user
AuthzSVNAccessFile "C:/SVNRep/acl"
</Location>
CustomLog "C:/Logs/Apache/SVN.log" "%t %u %{SVN-ACTION}e" env=SVN-ACTION
################################################
有任何想法吗?
非常感谢。
除了从 *nix 到 Windows 的日志路径不同之外,你所拥有的正是我在各种服务器上配置和工作的 - 可能 SVN-ACTION 没有进入 Windows 上的环境?作为一种解决方法,您可以尝试:
这显然不会像记录 %{SVN-ACTION}e 那样友好,但它会将所有对 /svn 的请求拆分到他们自己的日志中。
好吧,我想通了。经过大量搜索(发现其他一些人提出了同样的问题,但没有我预期的那么多),我偶然想到了解决方案。在观看节目时,在广告期间,我开始思考如何将 Subversion 与 Web 服务器完全隔离(就像完全在单独的服务器中一样)。然后我想知道为什么 Subversion 条目会淹没 Web 服务器日志,而我的其他 VirtualHosts 却没有(他们根据需要使用自己的日志)。然后它击中了我:我在主 Web 服务器中设置了 SVN,而不是虚拟主机!所以这就是答案。
要将 Subversion 记录到它自己的 LOG 文件而不是淹没主 Apache 日志文件,只需将 SVN 指令(例如 Location...)放在它自己的专用虚拟主机中。
这样,我可以使用 SVN 客户端连接到 SVN 虚拟主机,并使用Web 浏览器连接到Web 服务器。呃。:)这么简单;没有黑客,没有解决方法,什么都没有。奇怪的是为什么将 SVN 位置放在虚拟主机中似乎并没有出现在很多示例中——我只在一个示例中看到过!在几十个例子中。
(当然,如果您尝试使用 SVN 客户端连接到主日志文件,主日志文件仍会获得 OPTIONS、PROPFIND 等条目,但这是正确的行为。)
这是一个例子:
你有它。现在我想知道我是否可以追踪那些提出这个问题的人......