int LogStatus;
bool realt;
bool userip;
+ time_t start_time;
+ time_t end_time;
+ time_t read_start_time;
+ time_t read_end_time;
+ time_t process_start_time;
+ time_t process_end_time;
+ double read_elapsed;
+ double process_elapsed;
static int split=0;
static int convert=0;
static int output_css=0;
+ static int show_statis=0;
int option_index;
static struct option long_options[]=
{
{"keeplogs",no_argument,NULL,3},
{"split",no_argument,&split,1},
{"splitprefix",required_argument,NULL,'P'},
+ {"statistics",no_argument,&show_statis,1},
{0,0,0,0}
};
+ start_time=time(NULL);
+
#ifdef HAVE_LOCALE_H
setlocale(LC_TIME,"");
#endif
KeepTempLog=false;
NumLogSuccessiveErrors=3;
NumLogTotalErrors=50;
+ lines_read=0UL;
+ records_kept=0UL;
+ nusers=0UL;
bzero(IncludeUsers, sizeof(IncludeUsers));
bzero(ExcludeString, sizeof(ExcludeString));
init_usertab(UserTabFile);
+ read_start_time=time(NULL);
LogStatus=ReadLogFile(&ReadFilter);
+ read_end_time=time(NULL);
+ read_elapsed=(double)read_end_time-(double)read_start_time;
free_download();
free_excludecodes();
if(debug)
debuga(_("Period: %s\n"),period.text);
+ process_start_time=time(NULL);
if(DataFile[0] != '\0')
data_file(tmp);
else
gerarel();
+ process_end_time=time(NULL);
+ process_elapsed=(double)process_end_time-(double)process_start_time;
denied_cleanup();
authfail_cleanup();
-
if(!KeepTempLog && strcmp(tmp,"/tmp") != 0) {
unlinkdir(tmp,0);
}
free(userfile);
close_usertab();
+ end_time=time(NULL);
+
+ if (show_statis) {
+ double elapsed=(double)end_time-(double)start_time;
+ debuga(_("Total execution time: %.0lf seconds\n"),elapsed);
+ if (read_elapsed>0.) {
+ debuga(_("Lines read: %lu lines in %.0lf seconds (%.0lf lines/s)\n"),lines_read,read_elapsed,(double)lines_read/read_elapsed);
+ }
+ if (process_elapsed>0.) {
+ debuga(_("Processed records: %lu records in %.0lf seconds (%.0lf records/s)\n"),records_kept,process_elapsed,(double)records_kept/process_elapsed);
+ debuga(_("Users: %lu users in %.0lf seconds (%.0lf users/s)\n"),nusers,process_elapsed,(double)nusers/process_elapsed);
+ }
+ }
+
if(debug)
debuga(_("End\n"));
while ((linebuf=longline_read(fp_in,line))!=NULL) {
blen=strlen(linebuf);
+ lines_read++;
recs2++;
if (ShowReadStatistics && --OutputNonZero<=0) {
uinfo=userinfo_create(log_entry.User);
ufile->user=uinfo;
uinfo->id_is_ip=id_is_ip;
+ nusers++;
} else {
if (prev_ufile) {
prev_ufile->next=ufile->next;
debuga(_("Write error in the log file of user %s\n"),log_entry.User);
exit(EXIT_FAILURE);
}
+ records_kept++;
if (fp_log && current_format!=&ReadSargLog) {
fprintf(fp_log, "%s\t%s\t%s\t%s\t%s\t%"PRIu64"\t%s\t%ld\t%s\n",dia,hora,