|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/117734badf53a.html, оценка из 5, голосов 10
|