工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆

cronolog apache日志大小限制2G的问题

在32位的系统上,单文件有大小的限制问题,在apache,cronolog的应用上,都有,如下,是apache通过cronolog后的错误提示

piped log program '/usr/local/sbin/cronolog /www/servers/apache/logs/access_log.%Y%m%d' failed unexpectedly
[Wed Aug 11 14:58:42 2010] [notice] child pid 911 exit signal File size limit exceeded (25)
piped log program '/usr/local/sbin/cronolog /www/servers/apache/logs/access_log.%Y%m%d' failed unexpectedly

 

1. 修改src/cronolog.c 2. 查找log_fd = open(pfilename, O_WRONLY|O_CREAT|O_APPEND, FILE_MODE);一共是两处 修改为如下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(测试过)

另一方法
CustomLog "|/usr/local/cronolog/sbin/cronolog /www/logs/bbs.wedchina.com-%Y%m%d-access_log" combined env=!image-request加上%Y%m%d参数

引用自
CHOST=i686-pc-linux-gnu

CFLAGS=-march=i686 -O3 -pipe -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE

CXX=gcc CXXFLAGS=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE

./configure –prefix=/usr/local/cronolog-1.6.2

因为日志是通过cronolog来处理所以只要重新编译cronolog就可以了

关键是这一行代码…-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE

他会让你编译后的程序调用系统支持的64bit的操作..就不会有2G文件的限制了…

也重新编译了一下cronolog,希望不再有这个错误产生,观察中^

如果apache支持2G以上文件的下载呢,下面有一方法,现在还没测试

引用自
Linux下apache支持最大文件为2G,如果要让它支持更大文件,在编译前加上:

export CFLAGS=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

不加此参数的话,GCC默认是不支持大于2G的文件的。不光Apache2,其他的软件应该也适用。

 

 

 

 

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):