易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

【无锁日志】易语言第一份日志系统。   [复制链接]

    2019-11-12 16:17:59
    2017开源大赛(第二届)
    易语言资源网
    3583 次浏览
    来源链接

长时间运行的程序(例如服务器程序),或者流程复杂的多线程程序,打日志几乎是必需的,然而易这个圈子我到目前为止没有见过任何一个正经的日志轮子。

关于无锁:无锁直接在未知的项目中大量使用的话,可能会比有锁的日志安全。

关于性能:开启自动轮替,比 CreateFile + WriteFile + 临界资源 直接写慢一点,但是要注意,后者没有自动轮替,而且后者的自动轮替实现起来相对复杂,而且轮替的过程中容易阻塞、死锁或者丢失日志,而打日志最重要的就是【千万不要丢失日志】。

什么是自动轮替:

英文名 LogRotate,例如日志文件隔了一天就要换一个文件,否则文件越来越大,而且也不好整理和管理。比如默认每隔一天轮替一次。

我在这个日志系统里还加入了按照文件大小轮替,比如默认 100MB 轮替一次,太大了分析起来很吃力,编辑器带不动(我的日志不会太多,所以我自己使用会按照 10MB 来轮替,但是如果你的日志很频繁,轮替大小设置太小就会影响性能了)。

关于代码

代码从某天想起到成型也没有多久(事实上今天才算写了个雏形),没有经历过正式的项目,经历了好几个版本所以也没有整理得很好看(相对的,可读性也还算可以了)。注释不多,对原理感兴趣的可以自行面向搜索引擎理解,不懂也可以交流。

吐槽

易的自定义数据类型真的慢啊。。。感谢 kyozy 指点,以后能不用自定义数据类型就不用了。

最后,这是个简陋的轮子,希望各位多多扩展和贡献代码,一个人的精力有限,所涉及的项目规模和场景也有限,所以...

我觉得这是个简陋但是很有意义的源码,希望各位与我一起完成它。

源码下载:

测试看  _临时子程序()  下面的  测试_无锁日志()


7cba19fbfdf197d641da4a62482c11ca_232756uog44t63c6otk4ps.png



点我下载 (已有 140 次下载)

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
JBec.e 系统核心支持库 5.3 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:zyJson1.7(kyozy)- JS...     下一篇:最稳拨号类