apache采用的是2.2.3,測試是支援寫2G以上日志的
cronolog最新的版本是2002年的,估計那老兄不繼續維護了,采用如下方式寫日志的時候是寫到2150726147位元組就下不下去了
<code>CustomLog "|/usr/local/sbin/cronolog /home/logs/lrc.ttplayer.com/access_log.%Y%m%d" combined env=!dontlog</code>
然後看了網上說的什麼采用如下方式重新編譯cronolog
<code>CHOST="i686-pc-linux-gnu" </code>
<code>CFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"</code>
<code>CXX=gcc CXXFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" </code>
<code>./configure --prefix=/usr/local/cronolog-1.6.2</code>
然後測試還是不成
最後一個牛逼的人物出現,幫我看了看cronolog的代碼後提出修改如下,然後重新編譯cronolog後可以突破2G了
1. 修改cronolog-1.6.2/src/cronolog.c(cronolog.c檔案在編譯前cronolog-1.6.2包裡面的,是以需要重新編譯)
2. 查找log_fd = open(pfilename, O_WRONLY|O_CREAT|O_APPEND, FILE_MODE);
一共是兩處:
<code> </code><code>391 DEBUG((</code><code>"%s (%d): using log file \"%s\" from %s (%d) until %s (%d) (for %d secs)\n"</code><code>,</code>
<code> </code><code>392 timestamp(time_now), time_now, pfilename,</code>
<code> </code><code>393 timestamp(start_of_period), start_of_period,</code>
<code> </code><code>394 timestamp(*pnext_period), *pnext_period,</code>
<code> </code><code>395 *pnext_period - time_now));</code>
<code> </code><code>396 </code>
<code> </code><code>397 log_fd = </code><code>open</code><code>(pfilename, O_WRONLY|O_CREAT|O_APPEND, FILE_MODE);</code>
<code> </code><code>398 </code>
<code> </code><code>399 </code><code>#ifndef DONT_CREATE_SUBDIRS</code>
<code> </code><code>400 </code><code>if</code> <code>((log_fd < 0) && (errno == ENOENT))</code>
<code> </code><code>401 {</code>
<code> </code><code>402 create_subdirs(pfilename);</code>
<code> </code><code>403 log_fd = </code><code>open</code><code>(pfilename, O_WRONLY|O_CREAT|O_APPEND, FILE_MODE);</code>
<code> </code><code>404 }</code>
<code> </code><code>405 </code><code>#endif</code>
修改為如下log_fd = open64(pfilename, O_WRONLY|O_CREAT|O_APPEND, FILE_MODE);
如果編譯不通過,可能是您的gcc版本問題,可以修改成如下:
log_fd = open(pfilename, O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, FILE_MODE);
3. 修改後重新編譯,然後重新開機apache,可以支援2G以上分割應該,我這裡測試通過了反正。
本文轉自ling118 51CTO部落格,原文連結:http://blog.51cto.com/meiling/1976741,如需轉載請自行聯系原作者