Re: ap_log_rerror limit size

2013-03-13 Thread Eric Covener
On Wed, Mar 13, 2013 at 6:16 AM, Eric Covener cove...@gmail.com wrote:
 On Wed, Mar 13, 2013 at 6:01 AM, Hoang Vu Dang dang@gmail.com wrote:
 Hi guys,

 Is there any limit of the size of a message log entry? How to control this ?

 I did this:

 ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f-r,
 %s, buffer);

 And the buffer was truncated on the error log. I check the strlen of the 
 buffer and it was about 320K, and I got only around: ~ 8KB

 If it's more than PIPE_BUF, it won't be atomic and can be interleaved
 with other entries.  Are you sure it's truncated and not just spread
 out?

Er if using a piped logger that is.


Re: ap_log_rerror limit size

2013-03-13 Thread Hoang Vu Dang
Yes I am sure I can't find other entries related to that request.

How to find whether I used PIPE_BUF and how to increase that BUF size ?

On Mar 13, 2013, at 11:16 AM, Eric Covener cove...@gmail.com wrote:

 On Wed, Mar 13, 2013 at 6:01 AM, Hoang Vu Dang dang@gmail.com wrote:
 Hi guys,
 
 Is there any limit of the size of a message log entry? How to control this ?
 
 I did this:
 
 ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f-r,
%s, buffer);
 
 And the buffer was truncated on the error log. I check the strlen of the 
 buffer and it was about 320K, and I got only around: ~ 8KB
 
 If it's more than PIPE_BUF, it won't be atomic and can be interleaved
 with other entries.  Are you sure it's truncated and not just spread
 out?



Re: ap_log_rerror limit size

2013-03-13 Thread rm
On Wed, Mar 13, 2013 at 04:40:50PM +0100, Hoang-Vu Dang wrote:
 I traced this into the Apache source code (ver 2.4.4). It looks like the 
 error message string is really limited by the size of 8KB.

 This line is in server/log.c:1097

 
 static void log_error_core(const char *file, int line, int module_index,
int level,
apr_status_t status, const server_rec *s,
const conn_rec *c,
const request_rec *r, apr_pool_t *pool,
const char *fmt, va_list args)
 {
 char errstr[MAX_STRING_LEN];
 

 
 And MAX_STRING_LEN is defined in include/httpd.h:298

 /** The default string length */
 #define MAX_STRING_LEN HUGE_STRING_LEN

 /** The length of a Huge string */
 #define HUGE_STRING_LEN 8192
 

 I tried to increase this value, recompile, and apparently I got a longer 
 message.
 Please correct me if I am wrong... If this is true then can anyone tell me 
 why this HUGE_STRING_LEN value is a hard-coded value but not a 
 configurable option ?

I can't speak for the apache core team, but such a limit usually is done
for security reasons. Tracking buffer overflows in dynamically allocated
memory can be rather tricky. Btw, what's your goal here? I get the
feeling that you try to (ab)use the error log as a place to dump large
blobs of information (traces?). Remember, this is an error log, not a
place to dump Tolstoy's War and Peace 

 HTH Ralf Mattes

 
 Cheers, Vu
 that you try to (ab)use the error log as a place to dump large blobs of
information (traces?). Remember, this is an error log, not a
place to dump Tolstoy's War and Peace 

 HTH Ralf Mattes


 On 03/13/2013 11:16 AM, Eric Covener wrote:
 On Wed, Mar 13, 2013 at 6:01 AM, Hoang Vu Dang dang@gmail.com wrote:
 Hi guys,

 Is there any limit of the size of a message log entry? How to control 
 this ?

 I did this:

 ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f-r,
  %s, buffer);

 And the buffer was truncated on the error log. I check the strlen of the 
 buffer and it was about 320K, and I got only around: ~ 8KB
 If it's more than PIPE_BUF, it won't be atomic and can be interleaved
 with other entries.  Are you sure it's truncated and not just spread
 out?


Re: ap_log_rerror limit size

2013-03-13 Thread Hoang-Vu Dang
well, I do not buy the idea of security reasons, but I agree with your last
sentence that they do not see the need to make this a configurable option,
the error log does not need it.

regarding my purpose: mod_dumpio dumps data into the error log file in
chunks, I want to merge them if the message is large and do something with
it before logging. With this limitation, I will need to write it to
somewhere else using my custom file handler.

Vu

On Wed, Mar 13, 2013 at 5:46 PM, r...@seid-online.de wrote:

 On Wed, Mar 13, 2013 at 04:40:50PM +0100, Hoang-Vu Dang wrote:
  I traced this into the Apache source code (ver 2.4.4). It looks like the
  error message string is really limited by the size of 8KB.
 
  This line is in server/log.c:1097
 
  
  static void log_error_core(const char *file, int line, int module_index,
 int level,
 apr_status_t status, const server_rec *s,
 const conn_rec *c,
 const request_rec *r, apr_pool_t *pool,
 const char *fmt, va_list args)
  {
  char errstr[MAX_STRING_LEN];
  
 
  
  And MAX_STRING_LEN is defined in include/httpd.h:298
 
  /** The default string length */
  #define MAX_STRING_LEN HUGE_STRING_LEN
 
  /** The length of a Huge string */
  #define HUGE_STRING_LEN 8192
  
 
  I tried to increase this value, recompile, and apparently I got a longer
  message.
  Please correct me if I am wrong... If this is true then can anyone tell
 me
  why this HUGE_STRING_LEN value is a hard-coded value but not a
  configurable option ?

 I can't speak for the apache core team, but such a limit usually is done
 for security reasons. Tracking buffer overflows in dynamically allocated
 memory can be rather tricky. Btw, what's your goal here? I get the
 feeling that you try to (ab)use the error log as a place to dump large
 blobs of information (traces?). Remember, this is an error log, not a
 place to dump Tolstoy's War and Peace 

  HTH Ralf Mattes


  Cheers, Vu
  that you try to (ab)use the error log as a place to dump large blobs of
 information (traces?). Remember, this is an error log, not a
 place to dump Tolstoy's War and Peace 

  HTH Ralf Mattes
 
 
  On 03/13/2013 11:16 AM, Eric Covener wrote:
  On Wed, Mar 13, 2013 at 6:01 AM, Hoang Vu Dang dang@gmail.com
 wrote:
  Hi guys,
 
  Is there any limit of the size of a message log entry? How to control
  this ?
 
  I did this:
 
  ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f-r,
   %s, buffer);
 
  And the buffer was truncated on the error log. I check the strlen of
 the
  buffer and it was about 320K, and I got only around: ~ 8KB
  If it's more than PIPE_BUF, it won't be atomic and can be interleaved
  with other entries.  Are you sure it's truncated and not just spread
  out?