Daniel B. Hemmerich wrote:
Thanks for the good idea... it is a direction worth investigating further. Until someone offers a potentially better solution, I will play around with this and hopefully in the next few days report back on my results!

Thanks again,
Daniel

Jonathan Vanasco wrote:


I really have no idea, but no one has chimed up on this, so I'll try to help (and maybe someone here can clear up my misconceptions)

MP writes to STDERR, BUT things can get weird because of the way apache2 handles error messages --

I could have this wrong, but mp errors and perl errors seem to go to the main apache error log ( on my system that's /usr/local/apache2/logs/error_log ).

When i specify a separate errorlog for a vhost, STDERR is directed there

I don't know how to accomplish what you want , but I think I can help point you in a direction:

When I saw this post, i remembered how the default OSX apache2/mp had a specific compile time option that didn't 'print' to apache -- i think one had to call $r->print() instead of print, because of how STDOUT was directed. The 'fix' was either to recompile apache, or set up a perl handler to tie STDOUT to Apache

I'm found a post about this on google (not sure if its the 'right' one, i came across this 2 years ago):
    http://www.macosxhints.com/article.php?story=20031129120521712
PerlHeaderParserHandler "sub { tie *STDOUT, 'Apache' unless tied *STDOUT; }"

Based on that, i *think* that you could probably write a handler that intercepts STDERR, rewrites it to your specifications, and ties/redirects it somewhere

But , two things worry me about this:
a_ i'm not quite sure of the mechanics of the multiple log files that apache can generate, and which one(s) would have what you want -- or how to intercept them b_ i'm quite sure that there is a better way, that probably uses more of the apache configuration powers of mod_perl, and not a crazy hack like this

Again, I dont have much of an idea on this -- but no one else chimed up and that tie to STDOUT really popped out in my memories when I read this post.



On May 31, 2005, at 8:36 AM, Daniel B. Hemmerich wrote:

Hello all...

When a misconfiguration occurs, we receive a new line in the apache error logs that is not in the standard error log format (I assume since MP is writing to STDERR). Short of changing all of our scripts to properly log, is there a quicker method to accomplish the following change:

Change this:

Can't locate /www/path/goes/here//config.pl in @INC (@INC contains: /usr/local/lib/perl5/5.8.4/i686-linux /usr/local/lib/perl5/5.8.4 /usr/local/lib/perl5/site_perl/5.8.4/i686-linux /usr/local/lib/perl5/site_perl/5.8.4 /usr/local/lib/perl5/site_perl .) at /www/example.com/cgi-bin/example.cgi line 64.

To this:

[Thu May 19 08:47:41 2005] [error] [MODULENAME Can't locate /www/path/goes/here//config.pl in @INC (@INC contains: /usr/local/lib/perl5/5.8.4/i686-linux /usr/local/lib/perl5/5.8.4 /usr/local/lib/perl5/site_perl/5.8.4/i686-linux /usr/local/lib/perl5/site_perl/5.8.4 /usr/local/lib/perl5/site_perl .) at /www/example.com/cgi-bin/example.cgi line 64.

Thanks in advance!




Maybe it has to do with this:

http://perl.apache.org/docs/2.0/user/install/install.html#Apache

-DAP_UNSAFE_ERROR_LOG_UNESCAPED



--
Arshavir Grigorian
Systems Administrator/Engineer

Reply via email to