JUCE类库之FileLogger详解

除了可使用DBG()宏将调试信息输出到控制台之外,还可将调试数据、程序运行时所产生的数据、各种状态值等信息输出到磁盘文件,以方便查看并分析程序的调试信息和执行结果。此功能需两个类来完成:抽象基类Logger及其派生类FileLogger。无需显式创建对象,只需直接调用这两个类的静态函数即可实现文件日志功能。具体流程有三:

1、创建FileLogger类的指针。

FileLogger类的静态函数createDefaultAppLogger()返回本类的指针,赋值给作用域指针fileLog。createDefaultAppLogger()的1参为日志文件所位于的子目录,该子目录在Windows 7下位于:C:\Users\用户名\AppData\Roaming\testLogger(此处仅是演示,实际编程中,目录名最好为程序的名称)。

2参为日志文件的文件名。3参为记录日志时所显示的本次信息的标题(欢迎信息)。4参为文件的最大尺寸,默认128M。如果4参小于0,则每次日志之前,首先清空原有的内容。不小于0则为追加。

ScopedPointer  fileLog = FileLogger::createDefaultAppLogger ( 
                       "testLogger", "testLog.txt", "welcome message..."); 

注:无需担心每次执行此语句时均创建日志文件,createDefaultAppLogger()函数可进行判断,如果该日志文件已有,则不会重复创建。

2、设置日志对象。

得到FileLogger类的指针之后,将其设置为当前的日志对象。Logger类的静态函数setCurrentLogger()函数的1参为日志记录到此对象中。2参为是否销毁先前所设置的另一个日志对象(即是否销毁1参,如果有的话),默认为false。

Logger::setCurrentLogger (fileLog); 

3、程序代码中记录日志。

    for (int i = 0; ++i <= 5; )
    {
        // 将调试信息写入日志文件。writeToLog()的参数为const类型的字符串对象
        // 同时,一并将调试信息输出到IDE调试器的控制台中
        Logger::writeToLog ("i = " + String(i));
    }

执行上面三个步骤后,每次运行此代码块,日志文件testLog.txt均自动追加以下内容:
********************************************************************
welcome message… // 本次日志的标题
Log started: 23 Jun 2012 3:33:30pm // 本次日志的开始时间,以下为具体内容
i = 1
i = 2
i = 3
i = 4
i = 5