Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Michael Smirnov                      2:5020/400     16 Apr 2002  15:30:21
 To : All
 Subject : SquiD - access logging to a Named Pipe
 -------------------------------------------------------------------------------- 
 
 Здравствуйте!
 Hеобходим совет по named pipe,
 точнее как заставить Squid валить свой access.log
 через named pipe на STDIN Perl-скрипта.
 Я сделал "mkfifo /var/log/squid/fifolog",
 "chown squid:squid /var/log/squid/fifolog",
 отконфигурировал Squid "cache_access_log /var/log/squid/fifolog".
 
 FreeBSD 4.4-R, squid-2.5.PRE5
 
 Сделал небольшой Perl-скрипт, который выдает полученное
 на STDOUT.
 
 После запуска Squid получаю в cache.log:
 2002/04/15 19:50:13| logfileOpen: /var/log/squid/fifolog: (6) Device not
 configured
 
 Однако "cat file>/var/log/squid/fifolog" работает,
 и не только из-под рута!
 
 Кто-то уже пытался бороться со Squid, но безуспешено.
 http://groups.google.com/groups?selm=9o9960%241jmm%241%40FreeBSD.csie.NCTU.e
 du.tw&output=gplain
 
 Может, в этих сырцах Squid есть корявость?!
 
 logfileOpen(const char *path, size_t bufsz, int fatal_flag)
 {
     int fd;
     Logfile *lf;
     fd = file_open(path, O_WRONLY | O_CREAT | O_TEXT);
     if (DISK_ERROR == fd) {
         if (ENOENT == errno && fatal_flag) {
             fatalf("Cannot open '%s' because\n"
                 "\tthe parent directory does not exist.\n"
                 "\tPlease create the directory.\n", path);
         } else if (EACCES == errno && fatal_flag) {
             fatalf("Cannot open '%s' for writing.\n"
                 "\tThe parent directory must be writeable by the\n"
                 "\tuser '%s', which is the cache_effective_user\n"
                 "\tset in squid.conf.", path, Config.effectiveUser);
         } else {
             debug(50, 1) ("logfileOpen: %s: %s\n", path, xstrerror());
             return NULL;
         }
     }
 ....
 
 My perl script:
 #!/usr/bin/perl -w
 #
 # Squid script
 
 use strict;
 no strict 'refs';
 use Fcntl qw(:DEFAULT :flock);
 use CGI::Carp qw (fatalsToBrowser);
 
 BEGIN {
   my $str=$0; $str=~ s|[^/]*$||; # Delete the filename: some non-"/", end of
 line
   unshift (@INC, $str); #Dir of the current script
   use CGI::Carp qw(carpout);
   my $LOG=$str.'error-perl.log';
   open($LOG, ">>$LOG") or die "Can't open $LOG: $!\n";
   carpout($LOG);
 }
 
 $|=1; # Autoflush the output buffer
 
 #my $DATA='./fifo';
 my $DATA='/var/log/squid/fifolog';
 open($DATA, "<$DATA") or die "Can't open $DATA: $!\n";
 
 my $line;
 while ($line=<$DATA>)
 {
   print scalar(localtime).";Line received:\n$line";
   sleep(1);
 }
 
 close($DATA) or die "Can't close $DATA: $!\n";
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 SquiD - access logging to a Named Pipe   Michael Smirnov   16 Apr 2002 15:30:21 
Архивное /ru.unix.bsd/117734badf53a.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional