2012-09-13 49 views
0

我有以下語句:C++ - 根據級別記錄報表

static Logging::Logger* common_logger = new Logging::Logger(Logging::Logger::LEVEL); 

在Logger.hi已經

class Logger { 
public: 

    enum LEVEL { 
     Debug, 
     Warning, 
     Notification, 
     Error 
    }; 
    } 

我已經包括了我的另外一個類裏面的文件Logger.h爲:

Logging::log(CustomDialog::logger, Logging::Entry, CustomDialog::CLASSNAME, "CustomDialog"); 

我需要知道這是做的,爲什麼我這樣做的原因正確的方式是讓基於列弗日誌埃爾。

問候,

+4

爲什麼不直接使用[開源日誌庫]的一個(http://stackoverflow.com/questions/696321/best-logging -framework-for-native-c)並節省你很多的努力? –

+0

這些是否有相同的supposrt請建議 –

+1

是的,他們do.There有許多開放源代碼日誌框架,你可以模仿使用庫。檢查我的第一個評論中添加的鏈接。 –

回答

4

Log4cxx看一看 - 它很容易使用,幷包含幾乎所有的功能,你可能要在對C日誌框架++。它是可擴展的,可以通過配置文件進行配置,甚至支持遠程登錄。

1

你可以使用ACE_DEBUG,它似乎是老派(ala printf),但是線程安全,可靠和完全可配置(使用日誌文件,標準輸出等)。當然,你必須鏈接到libACE(Adaptive Communication Framework),但它的發展現在,默認情況下,許多Linux發行版都可以輕鬆使用這些軟件包。我一直在查看來自C++日誌庫後的列表,由Als提到,但似乎大多數人都遇到了mem漏洞,許多框架和boost :: Log還沒有出來。

另一點是,用最日誌庫流,例如像這樣:如預期在多線程環境

// from thread 1 
mlog(mlog::DEBUG) << "Debug message goes here" << mlog::endl; 

// from thread 2 
mlog(mlog::INFO) << "Info message goes here" << mlog::endl; 

將無法​​正常工作,而ACE將執行正確那裏。

的上面會看起來像這樣的輸出:

[thread1 | 12:04.23] Debug me[thread2 | 12:04.24] Info message goesssage goes herehere