From 8e3090d22871315ef7cf548308ae17bcfe8b56c8 Mon Sep 17 00:00:00 2001 From: arjen Date: Tue, 5 Aug 2003 08:11:06 +0000 Subject: [PATCH] Added two configuration parameters: logfile - Log to this file instead of stderr. verbosity - Verbose output if greater than 0. Added '-i' option for incremental parameter updates --- src/gcm_input/gcm_input.cpp | 70 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/src/gcm_input/gcm_input.cpp b/src/gcm_input/gcm_input.cpp index 9e47d48..915934e 100644 --- a/src/gcm_input/gcm_input.cpp +++ b/src/gcm_input/gcm_input.cpp @@ -7,7 +7,7 @@ *********************** ** FILE NAME : gcm_input.cpp ** SYSTEM NAME : Gnucomo - Gnu Computer Monitoring -** VERSION NUMBER : $Revision: 1.4 $ +** VERSION NUMBER : $Revision: 1.5 $ ** ** DESCRIPTION : Application to store client messages into the database ** The client message contains a log file from one of the @@ -34,6 +34,7 @@ ** -c Configuration name (default = gnucomo). ** -d Date and time of log arrival. ** -h FQDN of the client. +** -i Incremental - partial list of parameters. ** -s Service that created the log. ** -T Test mode. Do not alter the database. ** -v Verbose (debug) output. @@ -47,13 +48,19 @@ ******************************** ** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl ** CREATION DATE : Aug 29, 2002 -** LAST UPDATE : Mar 28, 2003 +** LAST UPDATE : Jul 24, 2003 ** MODIFICATIONS : **************************************************************************/ /***************************** $Log: gcm_input.cpp,v $ - Revision 1.4 2003-03-29 08:42:00 arjen + 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. + Added '-i' option for incremental parameter updates + + Revision 1.4 2003/03/29 08:42:00 arjen Exit without reading any input if the database connection fails. Revision 1.3 2002/11/09 08:04:27 arjen @@ -67,7 +74,9 @@ *****************************/ -static const char *RCSID = "$Id: gcm_input.cpp,v 1.4 2003-03-29 08:42:00 arjen Exp $"; +static const char *RCSID = "$Id: gcm_input.cpp,v 1.5 2003-08-05 08:11:06 arjen Exp $"; + +#include #include @@ -75,8 +84,10 @@ static const char *RCSID = "$Id: gcm_input.cpp,v 1.4 2003-03-29 08:42:00 arjen E bool verbose = false; bool testmode = false; +bool incremental = false; +std::ostream *log = &std::cerr; -static char *Version = "gcm_input version 0.0.4 - Nov 05, 2002"; +static char *Version = "gcm_input version 0.0.7 - Jul 24, 2003"; /*========================================================================= @@ -94,17 +105,19 @@ static char *Version = "gcm_input version 0.0.4 - Nov 05, 2002"; ** VARS CHANGED : ** FUNCTIONS USED : ** SEE ALSO : -** LAST MODIFIED : Mar 28, 2003 +** LAST MODIFIED : Jul 24, 2003 **========================================================================= */ int main(int argc, char *argv[]) { - const char *usage = "Usage: gcm_input [-c configname] [-h hostname] [-d date]" + const char *usage = "Usage: gcm_input [-c configname] [-h hostname] [-i] [-d date]" " [-s service] [-T] [-v] [-V]\n"; gnucomo_config cfg; char *config_name = "gnucomo"; + std::ofstream logfile; + /* Parse command line arguments */ @@ -113,7 +126,7 @@ int main(int argc, char *argv[]) int option; - while ((option = getopt(argc, argv, "c:h:d:s:TvV")) != -1) + while ((option = getopt(argc, argv, "c:h:d:s:iTvV")) != -1) { switch (option) { @@ -138,6 +151,10 @@ int main(int argc, char *argv[]) service = optarg; break; + case 'i': + incremental = true; + break; + case 'T': testmode = true; break; @@ -156,13 +173,6 @@ int main(int argc, char *argv[]) exit(1); } } - if (verbose) - { - std::cout << "Hostname = " << hostname; - std::cout << " Arrival = " << arrival; - std::cout << " Service = " << service << "\n"; - } - /* Get the configuration file */ if (!cfg.read(config_name)) @@ -171,9 +181,33 @@ int main(int argc, char *argv[]) exit(1); } + String logfile_name = cfg.find_parameter("gcm_input", "logfile"); + int verbosity = cfg.find_parameter("gcm_input", "verbosity"); + + if (logfile_name != "") + { + std::cerr << "Logging to " << logfile_name << ".\n"; + logfile.open(logfile_name, _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"; + } + else + { + log = &logfile; + verbose = verbose || verbosity > 0; + } + } + + *log << "Gcm_input starting at " << Now() << ".\n"; + if (verbose) { - std::cout << "Config OK.\n"; + *log << "Hostname = " << hostname; + *log << " Arrival = " << arrival; + *log << " Service = " << service << "\n"; + *log << "Config OK.\n"; } /* Try to connect to the database */ @@ -189,11 +223,13 @@ int main(int argc, char *argv[]) { msg.enter(); } + *log << "Gcm_input finished at " << Now() << ".\n"; return 0; } else { - std::cerr << "gcm_input: Can not connect to database.\n"; + *log << "gcm_input: Can not connect to database.\n"; + *log << "Gcm_input finished at " << Now() << ".\n"; return 1; } } -- 2.11.0