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. 如何檢索公開日記條目
- 2. 檢索日曆條目TimeZone
- 3. 即使沒有用戶日誌條目,也檢索所有用戶
- 4. 事件日誌條目消息塊檢索值
- 5. 檢索HTTP.sys日誌
- 6. 使用logback定製日誌條目
- 7. 不使用文件檢索SAS日誌
- 8. 使用API從mercurial檢索日誌
- 9. 日誌旋轉使用log4cplus附加器MAXFILESIZE和MaxBackupIndex
- 10. Log4cplus未格式化我要讓Log4cplus在系統日誌和額外的文件格式,條目系統日誌和額外的文件
- 11. 如何與每個日誌條目
- 12. 如何分析多行日誌條目?
- 13. 如何將java日誌條目分組?
- 14. 使用MemoryMappedFile和FileSystemWatcher檢測日誌文件的新條目
- 15. 如何在log4cplus中實現異步日誌記錄
- 16. 如何檢索短信日誌?
- 17. 如何爲systemd日誌創建日誌條目?
- 18. Solr搜索條件日誌
- 19. 如何檢索使用java的tomcat日誌文件
- 20. 檢索日曆事件條目信息
- 21. 索尼Bravia Android TV - 如何啓用/檢索adb logcat日誌
- 22. 過濾MSBuild日誌條目?
- 23. 更新elmah日誌條目
- 24. 環繞日誌條目
- 25. LogParser刪除日誌條目
- 26. Log4net複製日誌條目
- 27. Elasticsearch日誌條目說明
- 28. 升壓日誌:設置屬性使日誌條目消失
- 29. 檢索SVN更新日誌
- 30. 檢索系統日誌C#
什麼日誌的appender做你使用(你如何存儲你的日誌)? – tauran
關於你的日誌appender的另一個問題。 –