Quoting "Ulf Hofemeier" <[EMAIL PROTECTED]>:

Quoting Aengus <[EMAIL PROTECTED]>:

Ulf Hofemeier <[EMAIL PROTECTED]> wrote:

I have to admit that the analog configuration is getting quite
confusing to me. Unfortunately the APACHELOGFORMAT line doesn't solve
my problem, so please allow me to provide you with a little more
information regarding the purpose of the updated analog.cfg, as well
as what I'm doing before the problem occurs.

1. Copy the previous month Apache log to a temporary location
2. Run a script to extract page visitor data from the general Apache
log file and store it in a separate file
3. Run a bash 'for i' loop on the new log files and store the data in
page visitor sub directores

Unfortunately I decided that Apache has to write more information to
its access_log log file, which is finally the reason why there is
issues with analog now. According to the analog documentation there is
a way to set up a hierarchy so that it will understand a log file
syntax even if it changes from old to new over time, but I haven't
been able to figure out how to make it work.

If you have multiple LOGFORMAT statements, Analog will try them each in turn until it finds one that matches the entries in each of your logiles. That means that if you have multiple logfiles, and they aren't all the same format, Analog can still create a single report from these different logfiles. Obviously the report may understate this items that weren't recorded in some of the logfiles - for example, you might have a million requests, but only only 200,000 Browser strings if you only added that field in leater log files.

LOGFORMAT commands apply to LOGFILEs that are specified after the LOGFORMAT in the .cfg file. DEFAULTLOGFORMAT commands apply to logfiles that are specified on the command line.

It's not clear from your description whether your script calls Analog and passes it the name of the logfile as a paramter, or whether Analog picks up the logfile from the LOGFILE log-????-??.gz statement in your .cfg file.

If you're speciying the LOGFILES in the .cfg file, then these lines should do the job:
APACHELOGFORMAT (%h %l \"%u\" %t \"%r\" %>s %b)
APACHELOGFORMAT (%h %l \"%u\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\")

My script calls analog like this:

cd $datadir/$domain

# Determine the range of months from the list of log files that were not empty.
first=`ls log*|sort|head -1|cut -b5-`
first=`echo $first |rev |cut -b4- |rev` ;          # YEAR-MO
last=`ls access_log*|sort|tail -1|cut -b12-`
last=`echo $last |rev |cut -b4- |rev` ;            # YEAR-MO
range="$first--$last";                             # YEAR-MO--YEAR-MO

# Collect summary information from all the log files.
/data/stats/analog/analog access_log.????-??.gz > $analogdir/$domain/$range.html

# Collect information by month in seperate files.
for i in access_log.????-??.gz ;
do
    file=`echo $i |cut -b12-`                       # YEAR-MO.gz
    file=`echo $file |rev |cut -b4- |rev` ;        # YEAR-MO
    /data/stats/analog/analog $i > $analogdir/$domain/$file.html
done

So I pass the log file to analog as a parameter on the command line rather than using analog.cfg.

If you're calling Analog with the logfiles specified on the command line, then these lines should work:
DEFAULTAPACHELOGFORMAT (%h %l \"%u\" %t \"%r\" %>s %b)
DEFAULTAPACHELOGFORMAT (%h %l \"%u\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\")


I will give these two lines a try in my analog.cfg.

Thank you.

Adding DEFAULTAPACHELOGFORMAT didn't work (or my analog.cfg is still broken)

analog.cfg looks like this:

# If you need a LOGFORMAT command (most people don't -- try it without first!),
# it must go here, above the LOGFILE commands.
APACHELOGFORMAT (%S %l \"%u\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\")

DEFAULTLOGFORMAT (%S %j "%u" [%d/%M/%Y:%h:%n:%j] "%j %r %j" %c %b)
DEFAULTLOGFORMAT (%S %j "%u" [%d/%M/%Y:%h:%n:%j] "%j %r %j" %c %b)
DEFAULTLOGFORMAT (%S %j "%u" [%d/%M/%Y:%h:%n:%j] "%j %r" %c %b)
DEFAULTLOGFORMAT (%S %j "%u" [%d/%M/%Y:%h:%n:%j] "%r" %c %b)

DEFAULTAPACHELOGFORMAT (%h %l \"%u\" %t \"%r\" %>s %b)
DEFAULTAPACHELOGFORMAT (%h %l \"%u\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\")

LOGFORMAT (%S %j "%u" [%d/%M/%Y:%h:%n:%j] "%j %r %j" %c %b)
LOGFORMAT (%S %j "%u" [%d/%M/%Y:%h:%n:%j] "%j %r" %c %b)
LOGFORMAT (%S %j "%u" [%d/%M/%Y:%h:%n:%j] "%r" %c %b)
LOGFORMAT (%S %l \"%u\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\")

DEBUG ON

LOGFILE log-????-??.gz

The output after running analog on the latest apache log file looks like this:

/data/stats/analog/analog -G +g../../analog.cfg access_log.2008-09.gz >test.html

C: 1.2.3.4 - "-" [17/Sep/2008:13:12:52 -0600] "GET /images/sandiamountains.jpg HTTP/1.1" 200 61671 "http://ladb.unm.edu/"; "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13" C: * C: 1.2.3.4 - "-" [17/Sep/2008:13:12:53 -0600] "GET /favicon.ico HTTP/1.1" 200 437 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13" C: * C: 1.2.3.4 - "-" [27/Sep/2008:17:55:25 -0600] "GET / HTTP/1.1" 200 6576 "http://www.google.com/search?q=latin+america+databases&ie=utf-8&oe=utf-8&aq=t&rls=com.yahoo:en-US:official&client=firefox"; "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 YFF3 Firefox/3.0.1" C: *
F: Closing logfile access_log.2008-09.gz
S: Successful requests: 0
S: Redirected requests: 0
S: Failed requests: 0
S: Requests returning informational status code: 0
S: Status code not given: 0
S: Unwanted lines: 0
S: Corrupt lines: 23
/data/stats/analog/analog: Warning L: Large number of corrupt lines in logfile
  access_log.2008-09.gz: turn debugging on or try different LOGFORMAT
    Current logfile format:
      %S %j "%j" [%d/%M/%Y:%h:%n:%j] "%j %r %j" %c %b\n
      %S %j "%j" [%d/%M/%Y:%h:%n:%j] "%j %r %j" %c %b\n
      %S %j "%j" [%d/%M/%Y:%h:%n:%j] "%j %r" %c %b\n
      %S %j "%j" [%d/%M/%Y:%h:%n:%j] "%r" %c %b\n
F: Opening stdout as output file
F: Opening /data/stats/analog/requireanalogheader as header file
F: Closing header file /data/stats/analog/requireanalogheader
F: Opening /data/stats/analog/requireanalogfooter as footer file
F: Closing footer file /data/stats/analog/requireanalogfooter


+------------------------------------------------------------------------
|  TO UNSUBSCRIBE from this list:
|    http://lists.meer.net/mailman/listinfo/analog-help
|
|  Analog Documentation: http://analog.cx/docs/Readme.html
|  List archives:  http://www.analog.cx/docs/mailing.html#listarchives
|  Usenet version: news://news.gmane.org/gmane.comp.web.analog.general
+------------------------------------------------------------------------

Reply via email to