use File::Find; use POSIX qw(strftime); use lib '/home/httpd/lib/perl/'; use LONCAPA::Configuration; use Date::Manip; my $perlvar=LONCAPA::Configuration::read_conf('loncapa.conf'); $|=1; find( { # preprocess => \&only_user_activitylog_files, # wanted => \&print_filename, # wanted => \&log_metadata, wanted => \&process_activitylog_file, }, $perlvar->{'lonUsersDir'}.'/'.$perlvar->{'lonDefDomain'}); &print_data(); sub only_user_activitylog_files { print (join("\n",@_)); return 1; } my $start_time=&UnixDate("Aug 30th 00:00:00 2004","%s"); my %data; my $numusers; sub process_activitylog_file { if ($File::Find::dir=~m|/\d/\d/\d/|) { return; } if ($_ ne 'activity.log') { return; } open(FILE,"<$File::Find::name"); $numusers++; my $user=(split('/',$File::Find::dir))[-1]; while (my $line=) { if ($line !~ /Login/) { next; } my ($date)=split(':',$line,2); if ($date > 1093838400) { push (@{$data{$date}},$user); } } if ($numusers%100 == 0) { print "\b\b\b\b\b\b\b\b\b\b\b\b\b\bDid $user"; } } sub print_data { my $total_login=0; my %byday; print("\n"); foreach my $key (sort(keys(%data))) { #print(scalar(localtime($key))." ".scalar(@{$data{$key}})."\n"); $total_login+=scalar(@{$data{$key}}); my $day=strftime('%F',localtime($key)); $byday{$day}+=scalar(@{$data{$key}}); } foreach my $key (sort(keys(%byday))) { print("$key -> $byday{$key}\n"); } print("total -> $total_login\n"); }