Obtendo o Subversion Apache Module para usar um CustomLog

2

Eu tenho o Subversion instalado como um módulo do Apache e ele está configurado e funciona bem. O único problema é que eu recebo todas as coisas SVN (por exemplo, PROPFIND, OPTIONS, etc) registrados no mesmo arquivo .LOG como acessos normais da web. Eu estou tentando descobrir como obter o módulo SVN para reportar a um arquivo de log personalizado.

Aqui está a parte do meu arquivo conf do Apache que carrega o módulo SVN. Eu tentei fazer isso com a diretiva CustomLog (como visto na parte inferior), mas isso não funcionou.

################################################
#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
################################################


Alguma idéia?

Obrigado por lote .

    
por Synetech 28.07.2009 / 17:37

2 respostas

1

Bem, eu percebi isso. Depois de muita pesquisa (que encontrou alguns outros perguntando a mesma coisa, mas não tantos como eu teria esperado), eu encontrei a solução por serendipity. Enquanto assistia a um show, durante o comercial eu comecei a pensar sobre o que seria necessário para segregar completamente o Subversion do servidor web (como em um servidor separado). Então me perguntei por que as entradas do Subversion estavam inundando os logs do servidor web enquanto meus outros VirtualHosts não estavam (eles estavam usando seus próprios logs como desejado). Em seguida, me bateu: eu tenho SVN configurado no servidor web principal, não um host virtual! Então essa é a resposta.

Para ter o log do Subversion em seu próprio arquivo de LOG e não inundar o arquivo de log principal do Apache, basta colocar as diretivas do SVN (por exemplo, Location…) em seu próprio Host Virtual dedicado.

Dessa forma, posso conectar-me ao host virtual SVN com o cliente SVN e ao servidor da web com um navegador da web . Duh. :) Tão simples; sem hacks, sem soluções, nada. É curioso por que colocar o local do SVN em um host virtual não parece estar em muitos exemplos - eu vi em apenas um! de alguns exemplos.

(É claro que os arquivos de log principais ainda receberão entradas OPTIONS, PROPFIND, etc. se você tentar se conectar a ele com um cliente SVN, mas isso é um comportamento correto.)

Aqui está um exemplo:

<VirtualHost 127.200.200.200:80>
    <Directory "C:/Subversion/Repositories/">
        Options Indexes Includes
        Order   Deny,Allow
        Allow   from all
    </Directory>

    ServerName   svn
    ServerAdmin  [email protected]
    DocumentRoot "C:/Subversion/Repositories/"

    ErrorLog  "C:/Logs/SVN/error.log"
    CustomLog "C:/Logs/SVN/access.log"  common
    CustomLog "C:/Logs/SVN/referer.log" referer
    CustomLog "C:/Logs/SVN/agent.log"   agent

    LoadModule dav_svn_module   "C:/SVN/bin/mod_dav_svn.so"
    LoadModule authz_svn_module "C:/SVN/bin/mod_authz_svn.so"

    <Location /svn/>
      DAV                 svn
      SVNParentPath       "C:/Subversion/"
      SVNListParentPath   on
      SVNPathAuthz        off
      AuthType            Basic
      AuthName            "My Subversion Repositories"
      AuthUserFile        "C:/Subversion/passwd"
      Require             valid-user
      AuthzSVNAccessFile  "C:/Subversion/acl"
    </Location>
</VirtualHost>

Lá você tem. Agora eu me pergunto se posso rastrear as pessoas que fizeram essa pergunta ...

    
por 01.08.2009 / 05:20
1

Exceto pelo caminho de log diferente do * nix para o Windows, o que você tem é exatamente o que eu configurei e funciona em vários servidores - possivelmente o SVN-ACTION não está entrando no env no windows? Como solução alternativa, você pode tentar:

SetEnvIf Request_URI "^/svn/*" mysvn
CustomLog "C:/Logs/Apache/SVN.log" combined env=mysvn

Isso obviamente não será tão amigável quanto logar% {SVN-ACTION} e mas ele irá dividir todos os pedidos para / svn em seu próprio log.

    
por 30.07.2009 / 07:14