Thanks Rainer.

On Sun, Feb 8, 2009 at 8:50 PM, Rainer Jung <rainer.j...@kippdata.de> wrote:
> On 28.01.2009 06:50, Paras Fadte wrote:
>>
>> I have somewhat modified the rotatlogs utility to support compression
>> . Although it creates files in compressed format (.gz) and rotates
>> them properly the issue that i am facing is that when apache is
>> restarted (graceful or stop/start way ) the last created compressed
>> file doesn't seem to get closed  . Is there a way to rectify this ?
>> For compression I am using zlib .
>
> When httpd is restarted or stopped, then most rotatelogs processes get
> stopped via a signal. The signal could depend on the platform, but in my
> case it's SIGTERM. You can "truss" your rotatelogs to verify yourself,
> whether that's true for your Linux system too. truss will show you the
> signal the rotatelogs process received before terminating.
>
> Then you need to register a signal handler, e.g.
>
> apr_signal(SIG_TERM, my_signal_handler);
>
> which gets called automatically, whenever the process receives the
> respective signal. Your signal handler my_signal_handler() could then set an
> internal flag, indicating that you want to cleanup and exit rotatelogs.
>
> You can check this flag before and after the blocking read from the log
> pipe, and if it is set, close your gzip output cleanly and exit rotatelogs.
>
> You can temporarily deactivate or activate all signal handlers for SIG_TERM
> with
>
> apr_signal_unblock(SIG_TERM);
>
> and
>
> apr_signal_block(SIG_TERM);
>
> The ErrorLog for the global server behaves a little different, when
> restarting Apache it doesn't get a signal but instead it will get an EPIPE
> when trying to read from the log pipe.
>
> Regards,
>
> Rainer
>
>> On Fri, Jan 23, 2009 at 1:41 PM, Paras Fadte<plf...@gmail.com>  wrote:
>>>
>>> Thanks Rainer,
>>>
>>> yeah.. me not a pro at development .
>>>
>>> On Fri, Jan 23, 2009 at 1:30 PM, Rainer Jung<rainer.j...@kippdata.de>
>>>  wrote:
>>>>
>>>> On 23.01.2009 08:45, Paras Fadte wrote:
>>>>>
>>>>> Can you please tell me in which file ?
>>>>
>>>> I assume you are building rotatelogs from within the httpd sources.
>>>>
>>>> There is a file support/Makefile, which contains a line
>>>>
>>>> $(LINK) $(rotatelogs_LTFLAGS) $(rotatelogs_OBJECTS) $(PROGRAM_LDADD)
>>>>
>>>> Simply add "-lz" at the end of the line:
>>>>
>>>> $(LINK) $(rotatelogs_LTFLAGS) $(rotatelogs_OBJECTS) $(PROGRAM_LDADD) -lz
>>>>
>>>> In case you don't know what a Makefile is and how it basically works,
>>>> you
>>>> need to read about how to do C software development.
>>>>
>>>> Regards,
>>>>
>>>> Rainer
>>>>
>>>>> On Fri, Jan 23, 2009 at 1:09 PM, Rainer Jung<rainer.j...@kippdata.de>
>>>>>  wrote:
>>>>>>
>>>>>> On 23.01.2009 07:55, Paras Fadte wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I get following error when I try to use "compress" function of zlib
>>>>>>> in
>>>>>>>  "rotatelogs.c" . I have included "zlib.h" in rotatelogs.c .
>>>>>>>
>>>>>>> /home/paras/httpd-2.0.55/support/rotatelogs.c:294: undefined
>>>>>>> reference
>>>>>>> to `compress'
>>>>>>> collect2: ld returned 1 exit status
>>>>>>>
>>>>>>> Is it linking error ? where should I make the changes to eliminate
>>>>>>> this
>>>>>>> error?
>>>>>>
>>>>>> Add -lz to the linking flags.
>

Reply via email to