PDA

Visualizza la versione completa : Personalizzare awstats per statistiche giornaliere


wildsurf
05-03-2009, 13:24
Ciao a tutti, ho installato e configurato awstats per gestire le statistiche giornaliere della nostra Intranet aziendale.
Una lacuna che ho trovato nel pacchetto standard è che non si possono avere statistiche a livello giornaliero ma solo mensile.
Questo nonostante come spiegato nelle faq presenti in documentazione, l'applicativo sia perfettamente in grado di creare reports suddivisi per giornata.
Dato che avevo questa necessità, sono intervenuto in fase di generazione del log, impostando il parametro -databasebreak=day nella linea di comando della fase di update.
Ho visto che veniva creato correttamente il log della giornata interessata, ma si poneva a questo punto il problema di selezionare e visionare quella giornata dall'interfaccia web.
Sempre nelle faq viene spiegato come impostare i parametri via querystring per richiedere la visualizzazione del giorno specifico, ma farlo giornata per giornata è assurdo.
Allora sono intervenuto nella pagina awstats.pl cercando di aggiungere la select con il campo giorno, e il parametro databasebreak=day qualora venisse selezionato un giorno specifico anzichè tutto il mese.
In questo modo il giorno del mese può essere selezionato molto più comodamente senza intervenire direttamente nell'url che richiama la pagina.
Sto tenendo controllate le statistiche e la cosa pare funzionare.
Questo è un esempio di come esce il form di selezione del periodo:
http://upload.centerzone.it/images/km4cng3t0gom09a70qk0.gif

Dato però che non conosco il perl, vorrei postare il codice da me modificato qui di seguito.
Così se qualcuno dovesse scoprire che ho scritto delle cavolate, potrebbe correggermi.
Altrimenti se la cosa funziona davvero, potrei aiutare qualcuno che ha la mia stessa esigenza.



#PERSONALIZZAZIONE PER GIORNO -- INIZIO
print "<script type=\"text/javascript\">\n";
print "function impostabreak() {\n";
print "if (document.FormDateFilter.day.value!=\"\") {\n";
print "document.FormDateFilter.databasebreak.value=\"day\"\n";
print "} else {\n";
print "document.FormDateFilter.databasebreak.value=\"\"\n";
print "}\n";
print "}\n";
print "</script>\n";
print "<input type=\"hidden\" name=\"databasebreak\" value=\"\">\n";
print "<select onchange=\"impostabreak();\" class=\"aws_formfield\" name=\"day\">\n";
foreach ( 1 .. 31 ) {
my $dayix = sprintf( "%02s", $_ );
print "<option"
. ( "$DayRequired" eq "$dayix"
? " selected=\"true\""
: "" )
. " value=\"$dayix\">$dayix</option>\n";
}
if ( $AllowFullYearView >= 2 ) {
print "<option"
. ( $DayRequired eq '' ? " selected=\"true\"" : "" )
. " value=\"\">--</option>\n";
}
print "</select>\n";

#PERSONALIZZAZIONE PER GIORNO - FINE


Tutto questo va messo chiaramente subito prima della select del month.
Che ne dite ?

shishii
05-03-2009, 22:11
a vederlo così sembra convinciente

wildsurf
06-03-2009, 08:19
In effetti non capisco se sia così semplice, come mai quelli di awstats scrivono nei loro forum a chi gli pone la stessa richiesta, che sarà una implementazione futura e che per il momento non è disponibile ... :master:
Io sono 4 giorni che sto creando i reports divisi sia per mese che per giornata, e al momento non noto anomalie.

shishii
06-03-2009, 09:45
bahh... !!
è piuttosto frequente che anche abilissimi programmatori si incartino da soli su problemi semplici, e che le soluzioni migliori vengano trovate da chi guarda per la prima volta quel codice.

Loading