Apache中对access.log文件日期格式的设置

来源:互联网 发布:中国瓷器品牌知乎 编辑:程序博客网 时间:2024/05/01 09:02

公司有个项目要利用Apache的access.log对网站进行统计,由于网站的域名有150多个,所以是在程序(J2ee)中实现的虚拟主机,

但access.log中默认的日期格式不能直接存入数据库中,所以查了些资料对%t进行了设置,可以直接将格式文本取出存入数据库

 

1、打开httpd.conf文件

2、找到如下代码:

 

LogFormat "%h %l %u %t /"%r/"  /"%{Referer}i/" /"%{User-Agent}i/"" combined

 

3、修改%t

 

LogFormat "%h %l %u %{%Y-%m-%d %H:%M:%S}t /"%r/"  /"%{Referer}i/" /"%{User-Agent}i/"" combined

 

4、在Apache手册中可以查到对%{format}t中的format是采用的C标准库中的strftime函数,所以可以根据需要设置直接想要的格式

 

 localtime#include
struct tm *localtime(const time_t *tp);

 

将*tp中的日历时间转换成struct tm结构形式的本地时间,并返回指向该结构的指针。结构内容存储在可被其他调用重写的静态对象中。
*strftime#include
size_t strftime(char *s, size_t smax, const char *fmt, /const struct tm *tp);

 

根据fmt的格式说明把结构*tp中的日期与时间信息转换成指定的格式,并存储到s所指向的数组中,写到s中的字符数不能多于smax。函数返回实际写到s中的字符数(不包括'/0');如果产生的字符数多于smax,则返回0。
fmt类似于printf()中的格式说明,它由0个或多个转换规格说明与普通字符组成。普通字符原封不动的拷贝到s中,每个%c按照下面所描述的格式用与当地环境相适应的值来替换。转换规格列表如下:
格式

说明

%a 
一星期中各天的缩写名

%A

一星期中各天的全名

%b

缩写月份名

%B

月份全名

%c

当地时间和日期表示

%d

用整数表示的一个月中的第几天(01~31)

%H

用整数表示的时(24小时制,00~23)

%I

用整数表示的时(12小时制,01~12)

%j

用整数表示的一年中各天(001~366)

%m

用整数表示的月份(01~12)

%M

用整数表示的分(00~59)

%p

与AM/PM对应的当地表示方法

%S

用整数表示的秒(00~61)

%U

用整数表示一年中的星期数(00~53,将星期日看作为每周的第一天)

%w

用整数表示一周中的各天(0~6,星期日为0)

%W

用整数表示一年中的星期数(00~53,将星期一看作为每周的第一天)

%x

当地日期表示

%X

当地时间表示

%y

不带公元的年(00~99)

%Y

完整年份表示

%Z

时区名字(可获得时)

%%

%本身