欢迎光临, 访客. 请先 登入註册一个帐号.
一月 21, 2020, 06:16:38 下午
19594 文章 在 3864 主题 由 4580 会员
最新註册会员: aa123aa1
LifeType 中文开发论坛  |  支援  |  Instant LifeType 专区  |  关于Apache Access Logs « 上篇主题 下篇主题 »
页: [1]
作者 主题: 关于Apache Access Logs  (阅读 54189 次)
laifamily
新手见习
*
文章: 9


检视个人资料
« 于: 三月 04, 2006, 09:28:07 下午 »

请问一下

我已经观察到Apache Access Logs这档案会一直的写入新的资料
光光我ㄧ个管理员进进出出网站的    他就已经增长的蛮大了  有1MB多了
我现在都只有进去把该档清空 
如果一个多人使用的lifetype网站   这个档就会增长的更快
请问有没有什么方法    如加入一些命令列   让它改成每日为单位记一个档案或着周记       
或着让它每10MB换一个档名写 
这样用户就可以把旧Access Logs的档  移到其他的地方储存
好方便管理     

谢谢
已记录
lss
我不是被~拉~~出来的,不要叫我大大!
总版主
超级会员
*****
文章: 1511



检视个人资料 个人网站
« 回覆文章 #1 于: 三月 04, 2006, 10:54:11 下午 »

你是 linux 主机吗?介绍你看这个: 认识与分析登录档

初学 linux ,记得有事没事,常去 鸟哥的私房菜 网站朝拜朝拜。

lss
已记录

没找过 常见问题集或不知道 如何在 LifeType 中文开发论坛发问的人,恕不回答问题
laifamily
新手见习
*
文章: 9


检视个人资料
« 回覆文章 #2 于: 三月 04, 2006, 11:26:16 下午 »

Sorry 我忘了写下我的工作环境
由于不熟析linux的语法
但看了Apache 设定档案里面的程式码  迟迟未能下手
谢谢你的资讯   我会去研究研究

My system: Windows xp pro sp2 + Lifetype togo 1.0.2 beta
已记录
lss
我不是被~拉~~出来的,不要叫我大大!
总版主
超级会员
*****
文章: 1511



检视个人资料 个人网站
« 回覆文章 #3 于: 三月 05, 2006, 12:14:01 上午 »

在 google 蒐到这一篇: Creating Log Archives on Windows 2000 - Printable View 应该可以配合 windws 「排定的工作」 使用来远成目的,参考看看。

lss
已记录

没找过 常见问题集或不知道 如何在 LifeType 中文开发论坛发问的人,恕不回答问题
hlps9999
LifeType 中文发展团队
资深会员
*****
文章: 288



检视个人资料 个人网站
« 回覆文章 #4 于: 三月 05, 2006, 12:56:17 上午 »

lss:

在 google 蒐到这一篇: Creating Log Archives on Windows 2000 - Printable View 应该可以配合 windws 「排定的工作」 使用来远成目的,参考看看。

lss
你那连结的网址连错了(连到了鸟哥那里去了)
帮忙补上
http://www.netadmintools.com/part228.html
已记录
lss
我不是被~拉~~出来的,不要叫我大大!
总版主
超级会员
*****
文章: 1511



检视个人资料 个人网站
« 回覆文章 #5 于: 三月 05, 2006, 01:33:22 上午 »

 害羞 忙中有错  吐舌头

谢谢阿欣帮忙更正。

lss
已记录

没找过 常见问题集或不知道 如何在 LifeType 中文开发论坛发问的人,恕不回答问题
laifamily
新手见习
*
文章: 9


检视个人资料
« 回覆文章 #6 于: 三月 05, 2006, 07:48:44 上午 »

谢谢lss的网址和hlps9999的帮忙

我照着网上的步骤在DOS下做了一遍
><  好像行不通
不过  我也想了个土方法
那就是  每週由我自行人力备份  接着清除.
 疑惑

My system: windows xp pro sp2 + lifetype to go 1.0.2 beta
已记录
hlps9999
LifeType 中文发展团队
资深会员
*****
文章: 288



检视个人资料 个人网站
« 回覆文章 #7 于: 三月 05, 2006, 10:12:07 上午 »

刚刚玩了一下「Creating Log Archives on Windows 2000 - Printable View」的方法,蛮好用的。

写一下我的操作过程:
1.将上面网站所说的
引用
FOR %%V IN (%1) DO FOR /F "tokens=1-3 delims=/ " %%A IN ("%%~tV") DO copy "%%V" %%A%%B%%C%%~xV
将这一段文字,储存成 logrotate.bat

2.将  logrotate.bat 放到 C:\LifeType ToGo!\diskw\usr\local\apache2\logs 里

3.为了让Windows来做「排定的工作」,再写一个批次档 do-logrotate.bat
引用
logrotate.bat access.log
同样将这个 do-logrotate.bat 放在C:\LifeType ToGo!\diskw\usr\local\apache2\logs 里

4.去Windows「控制台」/「排定的工作」,去新增一个执行「do-logrotate.bat」的工作(可以设定每天一次)

等时间到,这样你就会有个  200X0X0X.log 的档案了。

若是只希望保留30天内的,将 logrotate.bat改成
引用
FOR %%V IN (%1) DO FOR /F "tokens=3 delims=/ " %%A IN ("%%~tV") DO copy "%%V" %%A%%~xV

这样就只会有 01.log~31.log

目前还在试,如何把旧的access.log清空??有几种方式可行,慢慢尝试中。
已记录
markwu
系统管理员
超级会员
*****
文章: 3928


Mark Wu


检视个人资料 个人网站
« 回覆文章 #8 于: 一月 08, 2007, 10:30:55 上午 »

mmm ... 我来想想把这一段 Script 包到 LifeType ToGo! 1.1.3 里面。

Mark
已记录

hsiaosh
新手见习
*
文章: 37


检视个人资料 个人网站
« 回覆文章 #9 于: 一月 26, 2007, 06:26:10 下午 »

因为我学校的社群也是架在Windows2003上,刚好有这个需要,原先是参照阿欣老师的作法,将那个批次档,利用工作排程去做,但不会自动清空内容,档案还是会累积越来越大,所以在网路上查询找到了以下的资料,可以提供出来给个参考。

学校主机是採用 appserv 2.4.7版

*******************************************************************************
◆ Windows下的日志循环

  一般在Linux下的日志循环可以由系统的 /etc/logrotate.conf 设定,而 Apache 的日志循环设定档在 /etc/logrotate.d/httpd 中(以Redhat/Fedora为例),预设为一星期循环一次。有关系统日志循环请参考相关教学文章。
  但是若您的Apache是安装在Windows的系统中,日志原则上(预设值)是不会循环的,所以若您一直没有清除或手动循环log档,一个档案上GB大小也是有可能的,若需要去解析它可能要花很久的时间。Apache本身提供了 rotatelogs (在Windows下为 rotatelogs.exe) 这个指令来循环日志,让你可以手动执行指令(请参考 rotatelogs 指令教学) ,或是直接在 httpd.conf 中设定,范例如下:

每天循环(一天为86400秒)
CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log 86400" combined
档案到达5MB就循环
CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log 5M" common
 

但这样设定的话,它所产生的Log档案名称格式为 access_log.nnnn,后面的 nnnn 由系统自动产生,例如:access_log.1168300800,但这样的话比较不容易维护或分析,您可以把它改成这样:

每天循环(一天为86400秒)
CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log_%Y%m%d 86400" combined

如此产生出来的档案名称会像这样:access_log_20070110

若您想自订档案名称的日期格式,可以参考以下的设定值:

%A - full weekday name (localized)
%a - 3-character weekday name (localized)
%B - full month name (localized)
%b - 3-character month name (localized)
%c - date and time (localized)
%d - 2-digit day of month
%H - 2-digit hour (24 hour clock)
%I - 2-digit hour (12 hour clock)
%j - 3-digit day of year
%M - 2-digit minute
%m - 2-digit month
%p - am/pm of 12 hour clock (localized)
%S - 2-digit second
%U - 2-digit week of year (Sunday first day of week)
%W - 2-digit week of year (Monday first day of week)
%w - 1-digit weekday (Sunday first day of week)
%X - time (localized)
%x - date (localized)
%Y - 4-digit year
%y - 2-digit year
%Z - time zone name
%% - literal `%'

完成以上 设定后,重新启动 Apache 即可。
*******************************************************************************

使用之前,请先把httpd.conf中,关于access.log的部分,先disable掉。
->CustomLog logs/access.log common
改成
->#CustomLog logs/access.log common
也就是加个 "#" 即可。

依据自己实际测试后,发现上面所举的例子,对我并不适用
->CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log 86400" combined

我是把它改成如下的方式:

TransferLog "|c:/AppServ/Apache2/bin/rotatelogs.exe c:/AppServ/Apache2/logs/%Y%m%d_access.log 86400"
ErrorLog "|c:/AppServ/Apache2/bin/rotatelogs.exe c:/AppServ/Apache2/logs/%Y%m%d_error.log 86400"

这样之后,它会自动每天更换一个档名,来做为记录档使用,也不必去清空它的内容,感觉还不错。
« 最后编辑时间: 一月 26, 2007, 06:35:13 下午 由 hsiaosh » 已记录

B2D Server 1028版+Apache:2.0.54+PHP:4.3.10+mysql:4.0.24
安装在:/var/www/plog
lifetype v1.2.5
採用的是从阿驾那儿学来的自订网址名称
markwu
系统管理员
超级会员
*****
文章: 3928


Mark Wu


检视个人资料 个人网站
« 回覆文章 #10 于: 一月 27, 2007, 10:01:38 上午 »

hsiaosh:

看起来不错,我会结合你跟阿欣的作法把他加到 Instant LifeType 里面。不过这只有 Apache的部分,我得来想想 Lighttpd 如何设定。

Mark
已记录

mouson
新手见习
*
文章: 22



检视个人资料 个人网站
« 回覆文章 #11 于: 三月 23, 2007, 01:03:26 上午 »

感谢大家的资讯
在这边我将使用批次档 及 rotatelogs.exe 的两种方法都实验过了
对上面的两种实作基本上都是可行的
但都遇到了一些问题

由于我的环境使用Apache 的Virtual host且每一个host都有自己的log档

首先我一开始是使用rotatelogs.exe 的方法
在Win上面实作时不知道为什么,在Apache 启动的时候
Apache会开启rotatelogs.exe这一个执行档
而且是每一个log档一个,
假如有三个host每个host都有error log及access log
这样子就一次会有六个rotatelogs.exe 启动起来
上面看起来不是什么问题

但是 不知道为什么,当apache的服务在stop的时候,
rotatelogs.exe是不会跟着stop的
所以就会发生自己在修改apache config等等
需要一值重新启动apache时
apache因为一堆已经启动的rotatelogs.exe 吃掉记忆体 而无法启动

接着第二个方法
我有在尝试使用批次档的方式
使用上目前都是可以的
但是这样的作法 log档没有办法每天清空
所以log档纵使每天复制一份出去,但所复制出来的,
会还包含着从启动开始的log纪录

第二个方法我自己有透过修改批次档
来达到可以同时复制所有的log档
而且每天会清空原本的log档

以下就分享我自己所写出来的log档
程式码:

NET Stop Apache2.2
FOR %%V IN (_*.log) DO FOR /F "tokens=1-3 delims=/ " %%A IN ("%%~tV") DO copy "%%V" %%A%%B%%C%%~nV%%~xV
FOR %%V IN (_*.log) DO DEL /s /q %%V
NET Start Apache2.2

首先第一行与第四行主要的功用为停止Apache及启动Apache服务
第二行就是在复制批次档摆放的那个资料匣下 所有 以"_"开头 ".log"结尾的档案 并且复制为 年月日 档名.log
第三行的地方是在删除原本的批次档

同样的 建立了这样的一个批次档之后
透过Win的排程设定,就可以达到每天更新log的效用了!!

至于为什么要停止Apache来做这件事情呢?
主要是因为所有的log档如果在apache启动的状况下
会因为控制权在Apache下,而无法删除log档
但我又一值无法找到使Apache启动的状况下清空Log档的方法
所以只好透过停止Apache的方式来达到。

这边是我参考MS的批次档撰写
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-cht/library/ServerHelp/89fdf70e-7d52-4f45-865d-6a61963a3a7e.mspx?mfr=true
已记录

个人部落格 http://MrMo.cc/mouson
页: [1]
LifeType 中文开发论坛  |  支援  |  Instant LifeType 专区  |  关于Apache Access Logs « 上篇主题 下篇主题 »
    前往: