684570555dd19fe79c09d401a88efbc1f7ccb334 braney Tue Jul 25 15:46:35 2023 -0700 more log data for Louis diff --git src/utils/louisParse/louisParse.c src/utils/louisParse/louisParse.c index b5164eb..dd05dd0 100644 --- src/utils/louisParse/louisParse.c +++ src/utils/louisParse/louisParse.c @@ -9,124 +9,135 @@ { errAbort( "louisParse - program to parse Apache error-log to get what Louis needs\n" "usage:\n" " louisParse logFile\n" "options:\n" " -xxx=XXX\n" ); } /* Command line validation table. */ static struct optionSpec options[] = { {NULL, 0}, }; +#define VERSION 1 + struct instanceData { time_t date; char *db; int elapsedTime; int hubTracks; int nativeTracks; int customTracks; char *pid; +int version; +int lineNo; }; static void countTracks(struct instanceData *data, char *tracks) { // printf("tracks %s\n", tracks); char *words[1024]; int wordCount = chopString(tracks, ",", words, ArraySize(words)); int ii; for(ii = 0; ii < wordCount; ii++) { if(startsWith("hub_", words[ii])) data->hubTracks++; else if(startsWith("ct_", words[ii])) data->customTracks++; else data->nativeTracks++; } } static void outData(struct instanceData *data) { //printf("%ld\t%s\t%u\t%u\t%u\t%u\t%s\n", data->date, data->db, data->elapsedTime, data->hubTracks, data->nativeTracks, data->customTracks, data->pid); int hubDb = 0; if (startsWith("hub_", data->db)) hubDb = 1; -printf("%ld\t%u\t%u\t%u\t%u\t%u\n", data->date, data->elapsedTime, hubDb, data->hubTracks, data->nativeTracks, data->customTracks); +printf("%ld\t%u\t%u\t%u\t%u\t%u\t%s\t%d\t%d\n", data->date, data->elapsedTime, hubDb, data->hubTracks, data->nativeTracks, data->customTracks, data->db, data->version, data->lineNo); } void louisParse(char *logFile) /* louisParse - program to parse Apache error-log to get what Louis needs. */ { struct lineFile *lf = lineFileOpen(logFile, TRUE); char *words[100]; int wordCount; struct instanceData *data; struct hash *pidHash = newHash(5); struct hashEl *hel; +time_t t = time(NULL); +struct tm *tm = localtime(&t); +char date[64]; +strftime(date, sizeof(date), "%c", tm); +printf("# louisParse ver%d %s %s\n",VERSION, date, logFile); +printf("# date\telapsedTime\tisHub\t#HubTracks\t#NativeTracks\t#CustomTracks\tassembly\tversion\tline#\n"); while ((wordCount = lineFileChop(lf, words)) != 0) { //printf("pid %s\n",words[7]); if (sameString(words[11], "trackLog") && differentString(words[12], "position")) { if ((hel = hashLookup(pidHash, words[7])) == NULL) { struct tm result; memset(&result, 0, sizeof(result)); char buffer[1024]; AllocVar(data); char *dot = strchr(words[3], '.'); *dot = 0; dot = strchr(words[4], ']'); *dot = 0; sprintf(buffer, "%s %s %s %s", words[1],words[2],words[3],words[4]); //printf("date %s\n",buffer); //strptime(buffer, "%m %d %T %y",&result); - data->date= dateToSeconds(buffer, "%b %d %T %y"); + data->date= dateToSeconds(buffer, "%b %d %T %Y"); data->pid= cloneString(words[7]); sprintf(buffer, "%s_%s", words[7],words[14]); //data->pid= cloneString(words[14]); //data->pid= cloneString(buffer); //printf("epoch %lu\n",data->date); //data->date = hashAdd(pidHash, words[7], data); data->db = cloneString(words[13]); } else data = hel->val; countTracks(data, words[15]); //{ //printf("pid: %d\n", atoi(words[7])); //printf("database: %s\n", words[13]); //printf("tracks: %s\n", words[15]); //} } if (sameString(words[11], "CGI_TIME:")) { if ((hel = hashLookup(pidHash, words[7])) != NULL) { data = hel->val; + data->lineNo = lf->lineIx; data->elapsedTime = atoi(words[16]); outData(data); hashRemove(pidHash, words[7]); } //printf("pid: %d\n", atoi(words[7])); //printf("time %s\n", words[16]); } //printf("%s %s %s %s\n", words[6], words[7], words[11], words[12]); } } int main(int argc, char *argv[]) /* Process command line. */ {