设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 3412|回复: 5

[日志分割回滚] nginx日志切割问题请教 [复制链接]

Rank: 1

签到
0
注册时间
2009-6-30
最后登录
2009-7-22
在线时间
1 小时
阅读权限
10
积分
1
帖子
2
主题
1
精华
0
UID
3908
发表于 2009-7-21 09:42:51 |显示全部楼层
本帖最后由 zyntsd 于 2009-7-21 09:48 编辑

看了论坛的教程,用了其中提供的日志切割脚本,也就是先mv后重新加载配置,我的系统会在每天的0:00开始执行脚本,但在切割后的日志中,除了昨天的日志外,还有少量的当天的日志,比如,0点之前是19号,那么切割后会有少量20号的日志。这很容易理解,mv肯定是需要时间的,即使是很短,如果是时间设在11:59,同样的问题也会出现,也就是说,这种方法总是会出现一些混乱的情况,这对一些日志分析程序来说,总是会损失一些访问记录,请问有没有更好的办法去日志切割,谢谢。

Rank: 1

注册时间
2009-6-30
最后登录
2009-7-22
在线时间
1 小时
阅读权限
10
积分
1
帖子
2
主题
1
精华
0
UID
3908
发表于 2009-7-22 08:59:38 |显示全部楼层
没人知道?

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2012-5-3
在线时间
1762 小时
阅读权限
200
积分
14979
帖子
2524
主题
1200
精华
25
UID
1

LT总司令

发表于 2009-7-23 09:02:27 |显示全部楼层
mv的那个方法就是nginx作者推荐的方法.

以下是神仙的作法,我也没有尝试,待你去实验:)
nginx 的日志是不支持 |/path/to/cronolog 这样的写法的,不能直接支持 cronolog 来轮转日志。但是日志总是要拆分的。一般都是每天跑一个 crontab ,把原来的日志 mv 一下,然后 kill -USR1 让 nginx 重新打开日志文件。

以前想到过应该可以利用命名管道来做这事情,昨天去实践了一下。

先创建一个命名管道,

mkfifo /path/to/nginx/logs/access_log_pipe ,当然也可以直接用命名管道代替原来的日志文件。

然后让 cronolog 从这个文件读:

/path/to/cronolog /path/to/log/access_%Y%m%.log <  /path/to/nginx/logs/access_log_pipe &

把 nginx 的日志路径指到那个命名管道然后重启一下就可以了。之后在 nginx 的启动脚本里要把启动 cronolog 放在启动nginx 之前。

来自:http://syre.blogbus.com/logs/32229878.html

或参考:http://pjkh.com/articles/2007/03/15/nginx-and-cronolog/
目前网上推荐的是这两种方法,少量的误差没有多大关系,真是去做统计日志分析,可能就不是直接分析LOG文件了。而是开发相应的统计系统。
感谢大家对linuxtone的支持!

使用道具 举报

Rank: 3Rank: 3

注册时间
2011-12-4
最后登录
2011-12-6
在线时间
1 小时
阅读权限
30
积分
201
帖子
1
主题
0
精华
0
UID
16312
发表于 2011-12-6 10:31:49 |显示全部楼层
丢一些日志不可避免

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢红之盟网络提供带宽支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2012-5-23 10:34 , Processed in 0.126425 second(s), 12 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部