***********************
** FILE NAME : gcm_input.cpp
** SYSTEM NAME : Gnucomo - Gnu Computer Monitoring
-** VERSION NUMBER : $Revision: 1.5 $
+** VERSION NUMBER : $Revision: 1.7 $
**
** DESCRIPTION : Application to store client messages into the database
** The client message contains a log file from one of the
********************************
** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
** CREATION DATE : Aug 29, 2002
-** LAST UPDATE : Jul 24, 2003
+** LAST UPDATE : Aug 11, 2003
** MODIFICATIONS :
**************************************************************************/
/*****************************
$Log: gcm_input.cpp,v $
- Revision 1.5 2003-08-05 08:11:06 arjen
+ Revision 1.7 2003-08-14 10:28:37 arjen
+ Use parameters from a new section 'logging' with three configuration parameters:
+ method - Output method to use for logging.
+ destination - Name of the log output destination.
+ level - Log level: Verbose output if greater than 0.
+
+ Revision 1.6 2003/08/11 16:56:16 arjen
+ Different kinds of log files are parsed by a collection of objects
+ of different classes, derived from the base class line_cooker
+ Depending on the message content or the message_type element in
+ XML, one of these objects is selected.
+
+ Logrunner is integrated with gcm_input. Although its functionality
+ is still limited, a connection between logrunner and gcm_input
+ is beginning to form.
+
+ Revision 1.5 2003/08/05 08:11:06 arjen
Added two configuration parameters:
logfile - Log to this file instead of stderr.
verbosity - Verbose output if greater than 0.
*****************************/
-static const char *RCSID = "$Id: gcm_input.cpp,v 1.5 2003-08-05 08:11:06 arjen Exp $";
+static const char *RCSID = "$Id: gcm_input.cpp,v 1.7 2003-08-14 10:28:37 arjen Exp $";
#include <fstream>
#include <getopt.h>
#include "message.h"
+#include "syslog_cooker.h"
+#include "irix_syslog_cooker.h"
+#include "access_cooker.h"
+#include "error_cooker.h"
bool verbose = false;
bool testmode = false;
** VARS CHANGED :
** FUNCTIONS USED :
** SEE ALSO :
-** LAST MODIFIED : Jul 24, 2003
+** LAST MODIFIED : Aug 11, 2003
**=========================================================================
*/
exit(1);
}
- String logfile_name = cfg.find_parameter("gcm_input", "logfile");
- int verbosity = cfg.find_parameter("gcm_input", "verbosity");
+ String log_method = cfg.find_parameter("logging", "method");
+ String log_destination = cfg.find_parameter("logging", "destination");
+ int level = cfg.find_parameter("gcm_input", "level");
- if (logfile_name != "")
+ if (log_method == "file" && log_destination != "")
{
- std::cerr << "Logging to " << logfile_name << ".\n";
- logfile.open(logfile_name, _IO_APPEND); // for gcc 2
+ std::cerr << "Logging to " << log_destination << ".\n";
+ logfile.open(log_destination, _IO_APPEND); // for gcc 2
//logfile.open(logfile_name, std::ios_base::app); // for gcc 3
if (!logfile)
{
- std::cerr << "Can't open logfile " << logfile_name << " for writing.\n";
+ std::cerr << "Can't open logfile " << log_destination << " for writing.\n";
}
else
{
log = &logfile;
- verbose = verbose || verbosity > 0;
+ verbose = verbose || level > 0;
}
}
if (db.is_connected())
{
- client_message msg(&std::cin, db);
+ client_message msg(&std::cin, db);
+ syslog_cooker slc;
+ irix_syslog_cooker islc;
+ access_cooker alc;
+ error_cooker elc;
+
+ msg.add_cooker(&slc);
+ msg.add_cooker(&islc);
+ msg.add_cooker(&alc);
+ msg.add_cooker(&elc);
if (msg.classify(hostname, arrival, service) > 0.9)
{