httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Lewis <...@joe-lewis.com>
Subject Re: "Best practices" or recommendations for logging from a module?
Date Sun, 01 Jul 2012 23:34:47 GMT
On 07/01/2012 05:28 PM, ohaya@cox.net wrote:
> ---- Joe Lewis<joe@joe-lewis.com>  wrote:
>    
>> On 07/01/2012 01:53 PM, ohaya@cox.net wrote:
>>      
>>> ---- Joe Lewis<joe@joe-lewis.com>   wrote:
>>>
>>>        
>>>> On 07/01/2012 12:55 PM, ohaya@cox.net wrote:
>>>>
>>>>          
>>>>> ---- ohaya@cox.net wrote:
>>>>>
>>>>>
>>>>>            
>>>>>> ---- ohaya@cox.net wrote:
>>>>>>
>>>>>>
>>>>>>              
>>>>>>> ---- Joe Lewis<jlewis@silverhawk.net>    wrote:
>>>>>>>
>>>>>>>
>>>>>>>                
>>>>>>>> Jim, you could use the log_error funtion all the time. Log_perror
javits
>>>>>>>> logging associated with a pool, and log_rerror is for requests.
If
>>>>>>>> possible, use log_rerror, because it puts the up address,
etc into the logs.
>>>>>>>>
>>>>>>>> Joe
>>>>>>>> On Jul 1, 2012 10:56 AM,<ohaya@cox.net>    wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>                  
>>>>>>> Joe,
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>> Jim
>>>>>>>
>>>>>>>
>>>>>>>                
>>>>>> Hi,
>>>>>>
>>>>>> Oh, oh :(.
>>>>>>
>>>>>> I'm using:
>>>>>>
>>>>>> ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, NULL,<my message>);
>>>>>>
>>>>>> all over the place, and even though I have only one LogLevel in the
httpd;conf, at the top level, set to "debug", I don't see those messages.
>>>>>>
>>>>>> The only ones I see are the ones that use APLOG_NOTICE.
>>>>>>
>>>>>> Why is this?  I thought that with LogLevel set to debug, that I should
see all level msgs output using ap_log_error?
>>>>>>
>>>>>> Thanks,
>>>>>> Jim
>>>>>>
>>>>>>
>>>>>>
>>>>>>              
>>>>> Hi,
>>>>>
>>>>> I think that I've found out why I'm not seeing those log messages.  Apparently,
if the server parameter is NULL, only APLOG_NOTICE message appear except for during startup.
>>>>>
>>>>> So, I have use a server for that parameter, e.g. r->server, BUT, in
some cases, e.g., in a function like the response callback for libcurl, where the signature
is pre-defined, and where there is no request_rec or server_rec among the parameters, how
can I get ap_log_error to output anything (other than APLOG_NOTICE) messages?
>>>>>
>>>>> Thanks,
>>>>> Jim
>>>>>
>>>>>
>>>>>            
>>>> Again, if you have access to a request_rec structure, I'd use
>>>> ap_log_rerror.  Otherwise, use ap_log_perror.  Those have a better
>>>> consistency with logging, e.g. :
>>>>
>>>> ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, requestrec, "uri = %s",r->uri);
>>>> ap_log_perror(APLOG_MARK, APLOG_DEBUG, 0, pool, "creating config");
>>>>
>>>> Joe
>>>>
>>>>          
>>> Hi,
>>>
>>> I think that I'm not explaining the problem that I have very clearly :(...
>>>
>>> Per earlier thread, I'm using libcurl to make an HTTP GET request from my module.
>>>
>>> In order that my module can access the response to that GET request, I had to
use a write callback function tha allows curl to t make the response available to my code.
>>>
>>>        
>> That does explain things.  Using libcurl in a situation like that
>> before, I ended up using the callback function data as a structure, and
>> you could (in theory) slap the same request_rec pointers into that
>> structure so that you also had them in the call back.
>>
>> Aside from that, you are correct, if you don't have access to the
>> request_rec/pool_t structures, ap_log_error works the best, but
>> r->server won't work, either.
>>
>> Are you using virtual hosts?  If so, did you check all of the logs?
>> using r->server might behave differently and end up logging messages
>> into a different log file if you have virtual hosts.
>>
>> Joe
>>      
>
> Hi,
>
> I was thinking about something similar to what you suggested, but I think that, for now,
I'll just use APLOG_NOTICE for the ap_log_error() calls inside the callback.  These would
mainly be for debugging anyway.
>
> Thanks,
> Jim
>    

Just a suggestion, then.

I'd suggest leaving those calls in, and surround them with #ifdef 
directives.  Then, rather than "removing" them when you finish the 
product, you simply remove a #define listed at the top and those calls 
don't get compiled in.  Makes it easier to also compile a debug-specific 
version, too.

Joe
--
http://www.silverhawk.net/

Mime
View raw message