2009年3月24日火曜日

visitorsの出力を制御する

アクセスログ解析のvisitorsですが、オプションを選択しなくても表示される項目がいくつかあります。出力結果中の以下の項目がそうです。

General information
Generated reports
Unique visitors in each day
Unique visitors in each month
Unique visitors from Google in each day
Requested pages
Requested images and CSS
Referers
Weekdays distribution
Hours distribution

現時点での最新版0.7のvisitors.cに後述するpatchを適用するとデフォルト(表示項目のオプション未指定)での出力はヘッダ、フッタだけになります。
新たに追加した表示オプションは以下。

--credits 上下のクレジットを出力します。
--information "General information"を出力します。
--report-link "Generated reports"を出力します。
--visits "Unique visitors in each day"と"Unique visitors in each month"を出力します。
--google-visits "Unique visitors from Google in each day"を出力します。
--pages "Requested pages"を出力します。
--images "Requested images and CSS"を出力します。
--referers "Referers"を出力します。
--weekdays "Weekdays distribution"を出力します。
--hours "Hours distribution"を出力します。

patchはこちら。(インデントを直してる部分とかありますけど。)

*** ../visitors_0.7/visitors.c 2006-03-31 00:31:49.000000000 +0900
--- visitors.c 2009-03-30 16:06:55.000000000 +0900
***************
*** 45,51 ****
int endt;
int processed;
int invalid;
! int blacklisted;
int hour[24];
int weekday[7];
int weekdayhour[7][24]; /* hour and weekday combined data */
--- 45,51 ----
int endt;
int processed;
int invalid;
! int blacklisted;
int hour[24];
int weekday[7];
int weekdayhour[7][24]; /* hour and weekday combined data */
***************
*** 61,67 ****
struct hashtable referersage;
struct hashtable date;
struct hashtable googledate;
! struct hashtable adsensed;
struct hashtable month;
struct hashtable googlemonth;
struct hashtable agents;
--- 61,67 ----
struct hashtable referersage;
struct hashtable date;
struct hashtable googledate;
! struct hashtable adsensed;
struct hashtable month;
struct hashtable googlemonth;
struct hashtable agents;
***************
*** 74,82 ****
struct hashtable os;
struct hashtable browsers;
struct hashtable robots;
! struct hashtable googlehumanlanguage;
! struct hashtable screenres;
! struct hashtable screendepth;
char *error;
};

--- 74,82 ----
struct hashtable os;
struct hashtable browsers;
struct hashtable robots;
! struct hashtable googlehumanlanguage;
! struct hashtable screenres;
! struct hashtable screendepth;
char *error;
};

***************
*** 145,154 ****
--- 145,159 ----
int Config_max_tld = 20;
int Config_max_robots = 20;
int Config_process_agents = 0;
+ int Config_process_credits = 0;
int Config_process_google = 0;
int Config_process_google_keyphrases = 0;
int Config_process_google_keyphrases_age = 0;
int Config_process_google_human_language = 0;
+ int Config_process_google_visits = 0;
+ int Config_process_hours = 0;
+ int Config_process_images = 0;
+ int Config_process_information = 0;
int Config_process_web_trails = 0;
int Config_process_weekdayhour_map = 0;
int Config_process_monthday_map = 0;
***************
*** 157,166 ****
--- 162,176 ----
int Config_process_os = 0;
int Config_process_browsers = 0;
int Config_process_error404 = 0;
+ int Config_process_pages = 0;
int Config_process_pageviews = 0;
int Config_process_monthly_visitors = 1;
+ int Config_process_referers = 0;
+ int Config_process_report_links = 0;
int Config_process_robots = 0;
int Config_process_screen_info = 0;
+ int Config_process_visits = 0;
+ int Config_process_weekdays = 0;
int Config_graphviz_mode = 0;
int Config_graphviz_ignorenode_google = 0;
int Config_graphviz_ignorenode_external = 0;
***************
*** 3121,3136 ****
return 1;
/* Report generation */
vi_print_header(fp);
! vi_print_credits(fp);
! vi_print_hline(fp);
! vi_print_information_report(fp, vih);
! vi_print_hline(fp);
! vi_print_report_links(fp);
! vi_print_hline(fp);
! vi_print_visits_report(fp, vih);
! vi_print_hline(fp);
! vi_print_googlevisits_report(fp, vih);
! vi_print_hline(fp);
if (Config_process_weekdayhour_map) {
vi_print_weekdayhour_map_report(fp, vih);
vi_print_hline(fp);
--- 3131,3156 ----
return 1;
/* Report generation */
vi_print_header(fp);
! if (Config_process_credits) {
! vi_print_credits(fp);
! vi_print_hline(fp);
! }
! if (Config_process_information) {
! vi_print_information_report(fp, vih);
! vi_print_hline(fp);
! }
! if (Config_process_report_links) {
! vi_print_report_links(fp);
! vi_print_hline(fp);
! }
! if (Config_process_visits) {
! vi_print_visits_report(fp, vih);
! vi_print_hline(fp);
! }
! if (Config_process_google_visits) {
! vi_print_googlevisits_report(fp, vih);
! vi_print_hline(fp);
! }
if (Config_process_weekdayhour_map) {
vi_print_weekdayhour_map_report(fp, vih);
vi_print_hline(fp);
***************
*** 3143,3154 ****
vi_print_pageviews_report(fp, vih);
vi_print_hline(fp);
}
! vi_print_pages_report(fp, vih);
! vi_print_hline(fp);
! vi_print_images_report(fp, vih);
! vi_print_hline(fp);
! vi_print_referers_report(fp, vih);
! vi_print_hline(fp);
if (Config_process_referers_age) {
vi_print_referers_age_report(fp, vih);
vi_print_hline(fp);
--- 3163,3180 ----
vi_print_pageviews_report(fp, vih);
vi_print_hline(fp);
}
! if (Config_process_pages) {
! vi_print_pages_report(fp, vih);
! vi_print_hline(fp);
! }
! if (Config_process_images) {
! vi_print_images_report(fp, vih);
! vi_print_hline(fp);
! }
! if (Config_process_referers) {
! vi_print_referers_report(fp, vih);
! vi_print_hline(fp);
! }
if (Config_process_referers_age) {
vi_print_referers_age_report(fp, vih);
vi_print_hline(fp);
***************
*** 3205,3216 ****
vi_print_trails_report(fp, vih);
vi_print_hline(fp);
}
! vi_print_weekdays_report(fp, vih);
! vi_print_hline(fp);
! vi_print_hours_report(fp, vih);
! vi_print_hline(fp);
! vi_print_credits(fp);
! vi_print_hline(fp);
vi_print_footer(fp);
if (of != NULL)
fclose(fp);
--- 3231,3248 ----
vi_print_trails_report(fp, vih);
vi_print_hline(fp);
}
! if (Config_process_weekdays) {
! vi_print_weekdays_report(fp, vih);
! vi_print_hline(fp);
! }
! if (Config_process_hours) {
! vi_print_hours_report(fp, vih);
! vi_print_hline(fp);
! }
! if (Config_process_credits) {
! vi_print_credits(fp);
! vi_print_hline(fp);
! }
vi_print_footer(fp);
if (of != NULL)
fclose(fp);
***************
*** 3301,3318 ****
/* ----------------------------------- main --------------------------------- */

/* command line switche IDs */
! enum { OPT_MAXREFERERS, OPT_MAXPAGES, OPT_MAXIMAGES, OPT_USERAGENTS, OPT_ALL, OPT_MAXLINES, OPT_GOOGLE, OPT_MAXGOOGLED, OPT_MAXUSERAGENTS, OPT_OUTPUT, OPT_VERSION, OPT_HELP, OPT_PREFIX, OPT_TRAILS, OPT_GOOGLEKEYPHRASES, OPT_GOOGLEKEYPHRASESAGE, OPT_MAXGOOGLEKEYPHRASES, OPT_MAXGOOGLEKEYPHRASESAGE, OPT_MAXTRAILS, OPT_GRAPHVIZ, OPT_WEEKDAYHOUR_MAP, OPT_MONTHDAY_MAP, OPT_REFERERSAGE, OPT_MAXREFERERSAGE, OPT_TAIL, OPT_TLD, OPT_MAXTLD, OPT_STREAM, OPT_OUTPUTFILE, OPT_UPDATEEVERY, OPT_RESETEVERY, OPT_OS, OPT_BROWSERS, OPT_ERROR404, OPT_MAXERROR404, OPT_TIMEDELTA, OPT_PAGEVIEWS, OPT_ROBOTS, OPT_MAXROBOTS, OPT_GRAPHVIZ_ignorenode_GOOGLE, OPT_GRAPHVIZ_ignorenode_EXTERNAL, OPT_GRAPHVIZ_ignorenode_NOREFERER, OPT_GOOGLEHUMANLANGUAGE, OPT_FILTERSPAM, OPT_MAXADSENSED, OPT_GREP, OPT_EXCLUDE, OPT_IGNORE404, OPT_DEBUG, OPT_SCREENINFO};

/* command line switches definition:
* the rule with short options is to take upper case the
* 'special' options (the option a normal user should not use) */
static struct ago_optlist visitors_optlist[] = {
{ 'A', "all", OPT_ALL, AGO_NOARG},
{ 'T', "trails", OPT_TRAILS, AGO_NOARG},
{ 'G', "google", OPT_GOOGLE, AGO_NOARG},
{ 'K', "google-keyphrases", OPT_GOOGLEKEYPHRASES, AGO_NOARG},
{ 'Z', "google-keyphrases-age", OPT_GOOGLEKEYPHRASESAGE, AGO_NOARG},
! { 'H', "google-human-language", OPT_GOOGLEHUMANLANGUAGE, AGO_NOARG},
{ 'U', "user-agents", OPT_USERAGENTS, AGO_NOARG},
{ 'W', "weekday-hour-map", OPT_WEEKDAYHOUR_MAP, AGO_NOARG},
{ 'M', "month-day-map", OPT_MONTHDAY_MAP, AGO_NOARG},
--- 3333,3355 ----
/* ----------------------------------- main --------------------------------- */

/* command line switche IDs */
! enum { OPT_MAXREFERERS, OPT_MAXPAGES, OPT_MAXIMAGES, OPT_USERAGENTS, OPT_ALL, OPT_MAXLINES, OPT_GOOGLE, OPT_MAXGOOGLED, OPT_MAXUSERAGENTS, OPT_OUTPUT, OPT_VERSION, OPT_HELP, OPT_PREFIX, OPT_TRAILS, OPT_GOOGLEKEYPHRASES, OPT_GOOGLEKEYPHRASESAGE, OPT_MAXGOOGLEKEYPHRASES, OPT_MAXGOOGLEKEYPHRASESAGE, OPT_MAXTRAILS, OPT_GRAPHVIZ, OPT_WEEKDAYHOUR_MAP, OPT_MONTHDAY_MAP, OPT_REFERERSAGE, OPT_MAXREFERERSAGE, OPT_TAIL, OPT_TLD, OPT_MAXTLD, OPT_STREAM, OPT_OUTPUTFILE, OPT_UPDATEEVERY, OPT_RESETEVERY, OPT_OS, OPT_BROWSERS, OPT_ERROR404, OPT_MAXERROR404, OPT_TIMEDELTA, OPT_PAGEVIEWS, OPT_ROBOTS, OPT_MAXROBOTS, OPT_GRAPHVIZ_ignorenode_GOOGLE, OPT_GRAPHVIZ_ignorenode_EXTERNAL, OPT_GRAPHVIZ_ignorenode_NOREFERER, OPT_GOOGLEHUMANLANGUAGE, OPT_FILTERSPAM, OPT_MAXADSENSED, OPT_GREP, OPT_EXCLUDE, OPT_IGNORE404, OPT_DEBUG, OPT_SCREENINFO, OPT_CREDITS, OPT_GOOGLEVISITS, OPT_HOURS, OPT_IMAGES, OPT_INFORMATION, OPT_PAGES, OPT_REFERERS, OPT_REPORTLINK, OPT_VISITS, OPT_WEEKDAYS };

/* command line switches definition:
* the rule with short options is to take upper case the
* 'special' options (the option a normal user should not use) */
static struct ago_optlist visitors_optlist[] = {
{ 'A', "all", OPT_ALL, AGO_NOARG},
+ { '\0', "credits", OPT_CREDITS, AGO_NOARG},
{ 'T', "trails", OPT_TRAILS, AGO_NOARG},
{ 'G', "google", OPT_GOOGLE, AGO_NOARG},
{ 'K', "google-keyphrases", OPT_GOOGLEKEYPHRASES, AGO_NOARG},
{ 'Z', "google-keyphrases-age", OPT_GOOGLEKEYPHRASESAGE, AGO_NOARG},
! { 'H', "google-human-language", OPT_GOOGLEHUMANLANGUAGE, AGO_NOARG},
! { '\0', "google-visits", OPT_GOOGLEVISITS, AGO_NOARG},
! { '\0', "hours", OPT_HOURS, AGO_NOARG},
! { '\0', "images", OPT_IMAGES, AGO_NOARG},
! { '\0', "information", OPT_INFORMATION, AGO_NOARG},
{ 'U', "user-agents", OPT_USERAGENTS, AGO_NOARG},
{ 'W', "weekday-hour-map", OPT_WEEKDAYHOUR_MAP, AGO_NOARG},
{ 'M', "month-day-map", OPT_MONTHDAY_MAP, AGO_NOARG},
***************
*** 3322,3327 ****
--- 3359,3369 ----
{ 'B', "browsers", OPT_BROWSERS, AGO_NOARG},
{ 'X', "error404", OPT_ERROR404, AGO_NOARG},
{ 'Y', "pageviews", OPT_PAGEVIEWS, AGO_NOARG},
+ { '\0', "pages", OPT_PAGES, AGO_NOARG},
+ { '\0', "referers", OPT_REFERERS, AGO_NOARG},
+ { '\0', "report-link", OPT_REPORTLINK, AGO_NOARG},
+ { '\0', "visits", OPT_VISITS, AGO_NOARG},
+ { '\0', "weekdays", OPT_WEEKDAYS, AGO_NOARG},
{ 'S', "robots", OPT_ROBOTS, AGO_NOARG},
{ '\0', "screen-info", OPT_SCREENINFO, AGO_NOARG},
{ '\0', "stream", OPT_STREAM, AGO_NOARG},
***************
*** 3343,3350 ****
{ 'a', "max-referers-age", OPT_MAXREFERERSAGE, AGO_NEEDARG},
{ 'd', "max-domains", OPT_MAXTLD, AGO_NEEDARG},
{ 's', "max-robots", OPT_MAXROBOTS, AGO_NEEDARG},
! { '\0', "grep", OPT_GREP, AGO_NEEDARG},
! { '\0', "exclude", OPT_EXCLUDE, AGO_NEEDARG},
{ 'P', "prefix", OPT_PREFIX, AGO_NEEDARG},
{ 'o', "output", OPT_OUTPUT, AGO_NEEDARG},
{ 'V', "graphviz", OPT_GRAPHVIZ, AGO_NOARG},
--- 3385,3392 ----
{ 'a', "max-referers-age", OPT_MAXREFERERSAGE, AGO_NEEDARG},
{ 'd', "max-domains", OPT_MAXTLD, AGO_NEEDARG},
{ 's', "max-robots", OPT_MAXROBOTS, AGO_NEEDARG},
! { '\0', "grep", OPT_GREP, AGO_NEEDARG},
! { '\0', "exclude", OPT_EXCLUDE, AGO_NEEDARG},
{ 'P', "prefix", OPT_PREFIX, AGO_NEEDARG},
{ 'o', "output", OPT_OUTPUT, AGO_NEEDARG},
{ 'V', "graphviz", OPT_GRAPHVIZ, AGO_NOARG},
***************
*** 3357,3364 ****
{ 'v', "version", OPT_VERSION, AGO_NOARG},
{ '\0', "tail", OPT_TAIL, AGO_NOARG},
{ '\0', "time-delta", OPT_TIMEDELTA, AGO_NEEDARG},
! { '\0', "filter-spam", OPT_FILTERSPAM, AGO_NOARG},
! { '\0', "ignore-404", OPT_IGNORE404, AGO_NOARG},
{ '\0', "debug", OPT_DEBUG, AGO_NOARG},
{ 'h', "help", OPT_HELP, AGO_NOARG},
AGO_LIST_TERM
--- 3399,3406 ----
{ 'v', "version", OPT_VERSION, AGO_NOARG},
{ '\0', "tail", OPT_TAIL, AGO_NOARG},
{ '\0', "time-delta", OPT_TIMEDELTA, AGO_NEEDARG},
! { '\0', "filter-spam", OPT_FILTERSPAM, AGO_NOARG},
! { '\0', "ignore-404", OPT_IGNORE404, AGO_NOARG},
{ '\0', "debug", OPT_DEBUG, AGO_NOARG},
{ 'h', "help", OPT_HELP, AGO_NOARG},
AGO_LIST_TERM
***************
*** 3462,3468 ****
Config_process_google_keyphrases_age = 1;
break;
case OPT_GOOGLEHUMANLANGUAGE:
! Config_process_google_keyphrases = 1;
Config_process_google_human_language = 1;
break;
case OPT_TLD:
--- 3504,3510 ----
Config_process_google_keyphrases_age = 1;
break;
case OPT_GOOGLEHUMANLANGUAGE:
! Config_process_google_keyphrases = 1;
Config_process_google_human_language = 1;
break;
case OPT_TLD:
***************
*** 3498,3504 ****
Config_process_error404 = 1;
Config_process_pageviews = 1;
Config_process_robots = 1;
! Config_process_screen_info = 1;
break;
case OPT_PREFIX:
if (Config_prefix_num < VI_PREFIXES_MAX) {
--- 3540,3556 ----
Config_process_error404 = 1;
Config_process_pageviews = 1;
Config_process_robots = 1;
! Config_process_screen_info = 1;
! Config_process_credits = 1;
! Config_process_google_visits = 1;
! Config_process_hours = 1;
! Config_process_images = 1;
! Config_process_information = 1;
! Config_process_pages = 1;
! Config_process_referers = 1;
! Config_process_report_links = 1;
! Config_process_visits = 1;
! Config_process_weekdays = 1;
break;
case OPT_PREFIX:
if (Config_prefix_num < VI_PREFIXES_MAX) {
***************
*** 3582,3605 ****
case OPT_TIMEDELTA:
Config_time_delta = atoi(ago_optarg);
break;
! case OPT_FILTERSPAM:
! Config_filter_spam = 1;
! break;
! case OPT_GREP:
! ConfigAddGrepPattern(ago_optarg, VI_PATTERNTYPE_GREP);
! break;
! case OPT_EXCLUDE:
! ConfigAddGrepPattern(ago_optarg, VI_PATTERNTYPE_EXCLUDE);
! break;
! case OPT_IGNORE404:
! Config_ignore_404 = 1;
! break;
! case OPT_DEBUG:
! Config_debug = 1;
! break;
! case OPT_SCREENINFO:
! Config_process_screen_info = 1;
! break;
case AGO_ALONE:
if (filenamec < VI_FILENAMES_MAX)
filenames[filenamec++] = ago_optarg;
--- 3634,3687 ----
case OPT_TIMEDELTA:
Config_time_delta = atoi(ago_optarg);
break;
! case OPT_FILTERSPAM:
! Config_filter_spam = 1;
! break;
! case OPT_GREP:
! ConfigAddGrepPattern(ago_optarg, VI_PATTERNTYPE_GREP);
! break;
! case OPT_EXCLUDE:
! ConfigAddGrepPattern(ago_optarg, VI_PATTERNTYPE_EXCLUDE);
! break;
! case OPT_IGNORE404:
! Config_ignore_404 = 1;
! break;
! case OPT_DEBUG:
! Config_debug = 1;
! break;
! case OPT_SCREENINFO:
! Config_process_screen_info = 1;
! break;
! case OPT_CREDITS:
! Config_process_credits = 1;
! break;
! case OPT_GOOGLEVISITS:
! Config_process_google_visits = 1;
! break;
! case OPT_HOURS:
! Config_process_hours = 1;
! break;
! case OPT_IMAGES:
! Config_process_images = 1;
! break;
! case OPT_INFORMATION:
! Config_process_information = 1;
! break;
! case OPT_PAGES:
! Config_process_pages = 1;
! break;
! case OPT_REFERERS:
! Config_process_referers = 1;
! break;
! case OPT_REPORTLINK:
! Config_process_report_links = 1;
! break;
! case OPT_VISITS:
! Config_process_visits = 1;
! break;
! case OPT_WEEKDAYS:
! Config_process_weekdays = 1;
! break;
case AGO_ALONE:
if (filenamec < VI_FILENAMES_MAX)
filenames[filenamec++] = ago_optarg;

0 コメント: