Thanks for the suggestions. Speaking to the company who look after our server, their opinion was that there aren't specific log analyzers for cross-site analysis, and most log analyzers are fairly basic and aimed at single sites with low traffic.
An interesting suggestion they made was Sequioa View,
http://www.win.tue.nl/sequoiaview/
...which I've never seen before.
Anyway, I'm close to a semi-decent solution to this problem. Using the ASP below I was able to list the folder structure on our server with the sizes of each folder indicated. Typically, the only folder which isn't yet playing ball is the Logs folder, because I assume it is in reality in a different location to the rest (it just looks like it is in the root when we view the server via FTP).
This script is taken from here...
http://www.brainjar.com/asp/dirlist/
...with just a long script timeout added and the target folder changed.
<%@ LANGUAGE="VBScript" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<% '************************************************* **************************
'* ASP Directory Listing *
'* *
'* Do not remove this notice. *
'* *
'* Copyright 1999, 2000 by Mike Hall. *
'* Please see
http://www.brainjar.com for documentation and terms of use. *
'************************************************* **************************
%>
<% Server.ScriptTimeout=8000
%>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Directory Listing</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<link rel="stylesheet" type="text/css" href="/common/default.css" />
</head>
<body>
<div id="demoBox">
<h3>ASP Directory Listing</h3>
<p>All folders and subfolders listed below</p>
</div>
<ul>
<% ListFolderContents("PHYSICAL_LOG_FOLDER_PATH_HERE" ) %>
</ul>
</body>
</html>
<% sub ListFolderContents(path)
dim fs, folder, file, item, url
set fs = CreateObject("Scripting.FileSystemObject")
set folder = fs.GetFolder(path)
'Display the target folder and info.
Response.Write("<li><b>" & folder.Name & "</b> - " _
& folder.Files.Count & " files, ")
if folder.SubFolders.Count > 0 then
Response.Write(folder.SubFolders.Count & " directories, ")
end if
Response.Write(Round(folder.Size / 1024) & " KB total." _
& vbCrLf)
Response.Write("<ul>" & vbCrLf)
'Display a list of sub folders.
for each item in folder.SubFolders
ListFolderContents(item.Path)
next
'Display a list of files.
' for each item in folder.Files
' url = MapURL(item.path)
' Response.Write("<li><a href=""" & url & """>" & item.Name & "</a> - " _
' & item.Size & " bytes, " _
' & "last modified on " & item.DateLastModified & "." _
' & "</li>" & vbCrLf)
' next
Response.Write("</ul>" & vbCrLf)
Response.Write("</li>" & vbCrLf)
end sub
function MapURL(path)
dim rootPath, url
'Convert a physical file path to a URL for hypertext links.
rootPath = Server.MapPath("/")
url = Right(path, Len(path) - Len(rootPath))
MapURL = Replace(url, "\", "/")
end function %>