log4cplus功能強大,但我不知道如何檢索它的日誌條目?有沒有任何功能?任何API或類似log4cplus提供的東西?提前致謝。如何使用log4cplus檢索日誌條目?
2
A
回答
6
嗯,我不確定你想要什麼。 log4cplus文檔爲您提供了使用它的例子。例如:
BasicConfigurator config;
config.configure();
Logger logger = Logger::getInstance("mylogger");
LOG4CPLUS_WARN(logger, "Hello, World!");
這樣你將在控制檯上得到一個日誌。如果你想配置log4cplus記錄事物的文件,您可以使用一個文件,如:
### logs.properties
# root logger
log4cplus.rootLogger=INFO, Main
# specific logger
log4cplus.logger.myloggerINFO, Main
log4cplus.additivity.mylogger=false
# appender that automatically rolls files
log4cplus.appender.Main=log4cplus::DailyRollingFileAppender
log4cplus.appender.Main.Schedule=DAILY
log4cplus.appender.Main.File=logs/mylogs.log
log4cplus.appender.Main.Append=true
log4cplus.appender.Main.MaxBackupIndex=100
log4cplus.appender.Main.MaxFileSize=100KB
log4cplus.appender.Main.layout=log4cplus::PatternLayout
log4cplus.appender.Main.layout.ConversionPattern=%D | %-5.5p | %-20.20c | %m|%n
而在你的C++程序:
PropertyConfigurator config("logs.properties");
config.configure();
要記錄的東西使用提供的宏:
logger = Logger::getInstance("mylogger");
LOG4CPLUS_DEBUG(logger, message);
LOG4CPLUS_WARN(logger, message);
LOG4CPLUS_INFO(logger, message);
LOG4CPLUS_ERROR(logger, message);
請參閱log4cplus examples開始。告訴我你是否需要更多信息。
我的2美分
編輯:這取決於您的appender
做好日誌被存儲。您可以擁有一個標準文件(FileAppender)或一組文件(RollingFileAppender)等等。這樣,您可以通過查看文件來查看舊日誌。您也可以使用系統日誌,或編寫自己的appender
以編程方式,使用DailyRollingFileAppender的一種方式。然後,您可以打開對應於特定日期的文件,並通過閱讀文件內容來獲取日誌。
另一種方法是編寫log4cplus DBMS appender並使用SQL lib讀取它們。我知道沒有標準的API來取回登錄log4cplus。
0
是的,有辦法做到這一點,但不是開箱即用。實現抽象類追加程序,做任何你需要的還有剛剛通過實施追加虛函數,也爲你所需要的功能提供了一個接口:
#ifndef STRINGAPPENDER_H
#define STRINGAPPENDER_H
#include <string>
#include <log4cplus/fileappender.h>
#include <log4cplus/config.hxx>
#include <log4cplus/appender.h>
#include <log4cplus/fstreams.h>
#include <log4cplus/helpers/property.h>
#include <log4cplus/helpers/timehelper.h>
/* I derived from FileAppender for i needed access to the stream underneath,
* feel free to derive from Appender as well
*/
class StringAppender : public log4cplus::FileAppender {
public:
log4cplus::tofstream & out;
StringAppender(std::string & name) : log4cplus::FileAppender (name),
out(log4cplus::FileAppender::out){}
virtual void append (const log4cplus::spi::InternalLoggingEvent &event)
{
//implement your logic here. You could store events in std::vector
log4cplus::FileAppender::append(event);
}
std::string retrieve_last_message(){/*to implement*/}
virtual void close(){}
virtual ~StringAppender() {}
};
#endif /* STRINGAPPENDER_H */
在cliente代碼
:
#include <log4cplus/configurator.h>
#include <log4cplus/logger.h>
#include <StringAppender.h>
int main(){
std::string filename = "test.log";
log4cplus::SharedAppenderPtr append_1(new StringAppender(filename));
log4cplus::Logger log = log4cplus::Logger::getRoot();
log.addAppender(append_1);
//reason i wanted the stream to be publicly available
//i needed it in my library test boost::test
unit_test_log.set_stream(((StringAppender &)*append_1.get()).out);
//some testing folows...
}
相關問題
- 1. 檢索日曆條目TimeZone
- 2. 即使沒有用戶日誌條目,也檢索所有用戶
- 3. 事件日誌條目消息塊檢索值
- 4. 檢索HTTP.sys日誌
- 5. 不使用文件檢索SAS日誌
- 6. 如何在log4cplus中實現異步日誌記錄
- 7. 使用MemoryMappedFile和FileSystemWatcher檢測日誌文件的新條目
- 8. 如何將java日誌條目分組?
- 9. 如何分析多行日誌條目?
- 10. 如何檢索短信日誌?
- 11. 如何爲systemd日誌創建日誌條目?
- 12. 如何檢索使用java的tomcat日誌文件
- 13. 檢索日曆事件條目信息
- 14. 索尼Bravia Android TV - 如何啓用/檢索adb logcat日誌
- 15. 過濾MSBuild日誌條目?
- 16. LogParser刪除日誌條目
- 17. 更新elmah日誌條目
- 18. 環繞日誌條目
- 19. Log4net複製日誌條目
- 20. 升壓日誌:設置屬性使日誌條目消失
- 21. 檢索SVN更新日誌
- 22. 檢索系統日誌C#
- 23. 使用Matlab檢索Outlook日曆項目
- 24. 如何檢索前10個條目?
- 25. 如何從rss條目檢索圖像?
- 26. IIS日誌記錄:不寫日誌條目;如果不匹配特定條件
- 27. 如何從非ATG java代碼發送日誌條目到ATG日誌
- 28. IIS日誌分析 - 如何檢索引用者信息
- 29. 如何檢索肥皂UI中的測試用例日誌
- 30. 如何檢索紗的日誌程序用java
什麼日誌的appender做你使用(你如何存儲你的日誌)? – tauran
關於你的日誌appender的另一個問題。 –