forked from HardySimpson/zlog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
104 lines (99 loc) · 4.26 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
[p] 使用valgrind测试性能
[ ] 增加man age, df, 案例
[ ] 和rsyslog对接的问题
[ ] hzlog的可定制话
[ ] 分类匹配的可定制化
[ ] 兼容性问题
zlog.h内,__VA_ARGS__的跨平台
[ ] c++接口的测试和实现
[ ] spec,level采用直接数组的方式重写
[ ] linux fsync->fdatasync, open..
[ ] 去除auto tools的使用,自行makefile[redis]
[ ] async file输出的增加
[ ] rcat
[ ] rule_name
[ ] 增加trace级别
--- 1.1.0 ---
[p] 在一开始就判断是否需要输出,建立bit位来判断
[x] 使用pthread_key_t线程私有变量来存储zlog_thread_t,仅有1%不到的提高,放弃424/422
[o] 增加%D,缓存strftime的结果
[o] 缓存pid, tid的字符串形式
[o] 去掉rc的使用[redis]
[o] 对ZLOG_FMT和ZLOG_HEX清算,部分成功
--- 1.0.7 ---
[x] 自己实现部分的strftime,进一步提高效率--替换后发现vsnprintf消耗增加,未能超越原有strftime的效率
[o] %t显示为16进制
[o] 零碎的性能优化,10%把
--- 1.0.6 ---
[o] 每秒取一次localtime_r,加速1倍以上
--- 1.0.5 ---
[o] 修复1.0.4的问题,reopen文件时用读写锁保护
--- 1.0.4 ---
[o] 测试多线程的效率
[o] 缓存静态文件的FILE*和fd,优化,加速3倍
--- 1.0.3 ---
[o] 基于日志笔数自动刷新配置
[o] 基于日志笔数自动做sync到硬盘操作
--- 1.0.2 ---
[o] 增加同步写入到硬盘选项,打开后极为费时
--- 1.0.1 ---
[o] 采用配置文件作为锁文件
--- 1.0.0 ---
[o] 改变配置文件的布局,去掉@ &这种符号,改用[global],[format]这样的形式来
[o] 把reload改成原子性的,失败用旧的
[o] 优化spec_gen_msg部分, spec内采用自己写的buf_append对齐来代替buf_sprintf
[o] 引入__func__
[o] 文件的权限设置
[o] 输出函数自定义
--- 0.9 ---
[o] 研究ilog读配置文件, buf
[o] 采用更加面向对象的方法来写
[o] 使用arraylist来代替linklist为内部数据结构
[o] 改进配置文件的格式
[o] 打造线程安全的日志函数库
[o] 解决微秒毫秒在配置中的表示
[o] 把event并到thread内避免开内存
[o] 增加init读取配置文件的api
[o] default] format的解析,初始化全无的时候的输出,zlog_chk_conf的编写
[o] 把category独立出来
[o] 增加update接口
[o] buf的大小无法通过zlog_init动态的改变,可以zlog_update重建所有缓存解决,呵呵
[o] 调整文件创建权限,采用类似fopen的办法,为0666&(~umask)
[o] syslog输出,搞定但发现syslog暴慢
[o] 转档的模式,是否需要轮询等,解决为传统模式
[o] 增加zlog_profile接口,诊断配置内存
[o] 增加MDC,可配置的增加字段
[o] 测试buf被重写的时候,是否会导致后面的\0没加
[o] xlog要改名为zlog....
[o] 取一次ZLOG_ERROR_LOG和ZLOG_DEBUG_LOG,避免多次getenv
[o] zc_assert一般关闭,调试打开
[o] 增加!.*, 匹配未被匹配的分类
[o] priority->level
[o] level自定义
[o] rule syslog open
[o] default format移到全局配置
[o] reset level, 用arraylist来做试试看
[o] ylog, 更简单的接口, 改名为dzlog的一堆接口来解决
[o] zlog-gen-conf
[o] rotate控制个数
--- 废弃想法 ---
[x] 使用writev来写日志,提高效率,达到一次形成,多次输出的目的
[x] 尝试信号量的方法来打成线程安全的转档互斥问题
[x] zlog.h变长参数宏的问题(参考glib的log解决)
[x] rule的dynamic] file可以从format获取
[x] 修改arraylist的读取长度,循环等
[x] 运行期间指定是否采用线程
[x] buf_append 优化——为了安全,不优化这个
[x] 用某种自动编译器以及文档生成器
[x] 输出到管道,有名管道和文件一样
[x] 打印堆栈。。可能需要语言支持
[x] zlog-input -c category -p priority -f conf
[x] 采用精细的reo en方法来建立用fo en来智能判断需不需要重开文件,操作系统本身已经做得够好,无须做
==========
编写文章:
打算做一个集中日志系统,设计如下
1.应用程序调用日志库,日志库写本地硬盘日志
2.日志库发送大量日志到本机的服务进程
3.本机的服务进程通过tcp发送到集中日志的服务器
4.集中日志服务器将日志存入数据库,共实时显示,事后分析用
本机的服务进程和集中日志服务器都打算使用rsyslog,比较专业