简单的开源日志Log4D delphi 6—delphi xe 10全可用
一、前言
网上看Log4Cpp等使用很麻烦, 10秒内看不懂我就没有耐心了。想起Delphi是最简单的编程工具,于是就Log4Delphi啦!
二、下载安装
1.下载 https://sourceforge.net/projects/log4delphi/files/
2. 安装:加入lib查找路径
下载后解压到,打开源码路径: \log4delphi-0.8\src\delphi
发现控件包散发出浓郁的陈酒香, 最高只支持最经典的Delphi7(Delphi8开始就被产品经理带歪了,居然使用.net做底层库,就像把高贵的宫殿建立在松软的垃圾堆上,默哀1分钟…)。
还好,Delphi和C语言一样上得厅堂性下得厨房,不必安装控件包,有查找路径,uses过来(像C的 #include)就行。如下图添加2个路径:
log4delphi-0.8\src\delphi\util
log4delphi-0.8\src\delphi
三、配置和使用
1. 加载配置和释放内存
在工程文件(相当于C语言的main文件)的源码中uses单元TConfiguratorUnit, TLoggerUnit
再在Application.Initialize;的后面调用doPropertiesConfiguration(‘log4delphi.properties’); 去读取配置并初始化log4d。
最后Application结束后,释放堆内存:
TLogger.freeInstances;
2. 编译测试
如果你的工程不是基于VCL,而是FireMonkey的,编译会有点小问题,需要修改如下:
在 TPropertyConfiguratorUnit.pas 和 TConfiguratorUnit中
(1). 源码中uses 了 Forms的地方,都要替换为FMX.Forms
(2). 源码中有ExtractFileDir(Application.ExeName)的地方,都要替换为GetCurrentDir()
幸好不多,只有3个地方。
3. 配置文件
将\log4delphi-0.8\example目录下的log4delphi.properties放入应用程序同一目录下。
4. 调用log4d
在需要Log的代码头部先
uses TLoggerUnit;
然后在你需要的地方写Log信息
根据Level的类型,有五种优先级别的Log信息
TLogger.getInstance.debug('Debug message');
TLogger.getInstance.info('Info message');
TLogger.getInstance.warn('Warn message');
TLogger.getInstance.error('Error message');
TLogger.getInstance.fatal('Fatal message');
下图是我的简单测试
编译运行后程序所在的目录下有个app.log文件, 显然记录了刚才我点击五类按键的情况。
四、实时查看Log
有时候需要实时查看Log记录,怎么办,Linux下的tail命令能很好地跟踪,windows则只能移花接木啦!
windows下执行Linux命令需要下载一个工具cygwin或者git bash
下载后直接安装并运行得到一个黑窗口:
用命令 cd 进入你app.log所在的目录如d盘test/xxx目录下:
cd d:/test/xxxxx
然后用tail命令实时跟踪:
tail -f app.log
如上图就可看到app.log不断地实时变化
五、深入配置文件
前面的探索只是能简单工作起来,高级用户还需自己配置log4delphi.properties文件。
比如改默认的单个文件为多个文件,适用于大量日志记录:
#log4delphi.appender.fileAppender=TFileAppender //只记录单个日志文件
log4delphi.appender.fileAppender=TRollingFileAppender //一个不够就生成多个文件保存, 单个文件的最大尺寸使用MaxFileSize设置,文件个数使用MaxBackupIndex设置。
log4delphi.appender.fileAppender.MaxBackupIndex=10
log4delphi.appender.fileAppender.MaxFileSize=2M
log4delphi.appender.fileAppender.File=app.log //文件名称
log4delphi.appender.fileAppender.AppDir=true //运行程序所在目录
log4delphi.appender.fileAppender.Append=true //追加方式
对日志的输出格式的设置,注释掉默认的格式,放开自己的格式:
#log4delphi.appender.fileAppender.layout=TSimpleLayout //默认的简单方式,日志文件中只写入你输出的内容如:log.debug('xxx'); 日志只记录xxx
log4delphi.appender.fileAppender.layout=TPatternLayout //自定义Pattern参数来设置日志输出格式
log4delphi.appender.fileAppender.layout.Pattern=%d{yyyy-mm-dd hh:nn:ss:zzz} [%5p] [%L] [%e] %m%n
当然高级用户还有不同优先级的log,探索吧,后浪!