私はロギング システムを使用する初心者ですが、プログラムに追加すると非常に便利です。
私の問題を要約します。ロギング ライブラリlog4cplusを使用します
2 つの単純なクラスとメイン プログラムを使用した簡単な例を示します。
それは私のエラーログです:
- log4cplus:ERROR ロガー (メイン) のアペンダーが見つかりませんでした。
- log4cplus:ERROR log4cplus システムを正しく初期化してください。
- セグメンテーション違反: 11
問題は、アペンダーで問題を解決する方法がわからないことです。
それが私の例の基本的なコードです。 Class1.h
#include <iostream>
#include <log4cplus/configurator.h>
#include <log4cplus/logger.h>
using namespace std;
// Use the log4cplus namespace
using namespace log4cplus;
class one
{
private:
// Create the logger
Logger logger;
public:
bool flag;
int valor;
one();
int multiplica(int a);
};
Class1.cpp
one::one()
{
logger.getInstance(LOG4CPLUS_TEXT("Clase One - constructor."));
}
int one::multiplica(int a)
{
int sol = 0;
sol = valor * a;
// Imprimo un mesaje en el log.
LOG4CPLUS_INFO(logger, "El resultado de la multiplicación es: xx");
return sol;
}
Class2.h
#include <iostream>
#include <log4cplus/configurator.h>
#include <log4cplus/logger.h>
using namespace std;
// Use the log4cplus namespace
using namespace log4cplus;
class two
{
private:
// Create the logger
Logger logger;
public:
bool flag;
int valor;
two();
int suma(int a);
};
Class.cpp
two::two()
{
logger.getInstance(LOG4CPLUS_TEXT("Clase Two - DEconstructor."));
}
int two::suma(int a)
{
int sol = 0;
sol = valor + a;
// Imprimo un mesaje en el log.
LOG4CPLUS_INFO(logger, "El resultado de la suma es: YY ");
return sol;
}
main.cpp
int main(int argc, char** argv)
{
// Load the properties
PropertyConfigurator::doConfigure("logClase.properties");
Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("main"));
// Log with INFO level
if (logger.isEnabledFor(INFO_LOG_LEVEL))
{
LOG4CPLUS_INFO(logger, "Application startup");
}
one uno;
two dos;
uno.valor = dos.valor = 4;
uno.multiplica(7);
dos.suma(7);
// Log with INFO level
if (logger.isEnabledFor(INFO_LOG_LEVEL))
{
LOG4CPLUS_INFO(logger, "Application shutdown");
}
return 0;
}
私が間違っていることは何ですか?それがロギングシステムを操作する正しい方法です??
単純なプロパティ ファイルを使用して、すべてのログ メッセージをファイルに保存します。
これは、ロガーを構成するためのlogClase.propertiesファイルです。
log4cplus.rootLogger=INFO, STDOUT, FILEAPPENDER
log4cplus.logger.main=INFO
log4cplus.logger.utils=FILEAPPENDER
log4cplus.appender.STDOUT=log4cplus::ConsoleAppender
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout
log4cplus.appender.STDOUT.layout.ConversionPattern=%d{%m/%d/%y %H:%M:%S} [%t] %-5p %c{2} %%%x%% - %m [%l]%n
log4cplus.appender.FILEAPPENDER=log4cplus::RollingFileAppender
log4cplus.appender.FILEAPPENDER.File=KlasseEx.log
log4cplus.appender.FILEAPPENDER.MaxFileSize=5MB
#log4cplus.appender.FILEAPPENDER.MaxFileSize=500KB
log4cplus.appender.FILEAPPENDER.MaxBackupIndex=1
log4cplus.appender.FILEAPPENDER.layout=log4cplus::PatternLayout
log4cplus.appender.FILEAPPENDER.layout.ConversionPattern=%d{%m/%d/%y %H:%M:%S} [%t] %-5p %c{2} %%%x%% - %m [%l]%n
FILEAPPENDER と Console アペンダーを使用して、ファイルとコンソールにメッセージをスローしたいと考えています。それは難しいことではなく、簡単にできることだと思います。