00001 #include "TxEventLog.h"
00002 #include "TxEventLogFactory.h"
00003
00004 #include <stdio.h>
00005 #include <stdlib.h>
00006 #include <getopt.h>
00007 #include <string>
00008 #include <iostream>
00009
00010 void printUsage () {
00011 std::cout << "\nUSAGE:"
00012 << "\n TxLogEvent"
00013 << "\n -r/--requester <requester name> : required"
00014 << "\n -j/--brokerjobid <broker job id> : required"
00015 << "\n -t/--brokertaskid <broker task id> : required"
00016 << "\n -k/--key <message key> : required"
00017 << "\n -v/--value <message value> : required"
00018 << "\n -l/--level <event level> : optional"
00019 << "\n -c/--context <event context> : optional"
00020 << std::endl << std::endl;
00021 }
00022
00023 int getOpts (int argc, char** argv, std::string& requester,
00024 std::string& brokerJobID, std::string& brokerTaskID,
00025 std::string& key, std::string& value,
00026 std::string& context, std::string& level)
00027 {
00028 static const char *optString = "r:j:t:c:l:s:k:v:h?";
00029 static struct option longOpts [] = {
00030 {"requester", required_argument, NULL, 'r'},
00031 {"brokerjobid", required_argument, NULL, 'j'},
00032 {"brokertaskid", required_argument, NULL, 't'},
00033 {"key", required_argument, NULL, 'k'},
00034 {"value", required_argument, NULL, 'v'},
00035 {"context", required_argument, NULL, 'c'},
00036 {"level", required_argument, NULL, 'l'},
00037 {"help", no_argument, NULL, 'h'}
00038 };
00039 int longIndex = 0;
00040
00041 int opt = getopt_long (argc, argv, optString, longOpts, &longIndex);
00042 if (opt == -1) {
00043 printUsage ();
00044 return 1;
00045 }
00046
00047 bool rOpt = false, jOpt = false, tOpt = false, kOpt = false, vOpt = false;
00048 while (opt != -1) {
00049 switch (opt) {
00050 case 'r':
00051 rOpt = true;
00052 requester = optarg;
00053 break;
00054
00055 case 'j':
00056 jOpt = true;
00057 brokerJobID = optarg;
00058 break;
00059
00060 case 't':
00061 tOpt = true;
00062 brokerTaskID = optarg;
00063 break;
00064
00065 case 'k':
00066 kOpt = true;
00067 key = optarg;
00068 break;
00069
00070 case 'v':
00071 vOpt = true;
00072 value = optarg;
00073 break;
00074
00075 case 'c':
00076 context = optarg;
00077 break;
00078
00079 case 'l':
00080 level = optarg;
00081 break;
00082
00083 case 'h':
00084 case '?':
00085 case -1:
00086 default:
00087 printUsage();
00088 return 1;
00089 break;
00090 }
00091 opt = getopt_long (argc, argv, optString, longOpts, &longIndex);
00092 }
00093
00094 if (!rOpt || !jOpt || !tOpt || !kOpt || !vOpt) {
00095 printUsage ();
00096 return 1;
00097 }
00098
00099 return 0;
00100 }
00101
00102 TxLogging::TxEventLog::Level getLevel (const std::string& level) {
00103 int intLevel = std::atoi (level.c_str ());
00104 switch (intLevel) {
00105 case 1:
00106 return TxLogging::TxEventLog::LEVEL_TRACE;
00107
00108 case 2:
00109 return TxLogging::TxEventLog::LEVEL_DEBUG;
00110
00111 case 3:
00112 return TxLogging::TxEventLog::LEVEL_INFO;
00113
00114 case 4:
00115 return TxLogging::TxEventLog::LEVEL_NOTICE;
00116
00117 case 5:
00118 return TxLogging::TxEventLog::LEVEL_WARNING;
00119
00120 case 6:
00121 return TxLogging::TxEventLog::LEVEL_ERROR;
00122
00123 case 7:
00124 return TxLogging::TxEventLog::LEVEL_CRITICAL;
00125
00126 case 8:
00127 return TxLogging::TxEventLog::LEVEL_ALERT;
00128
00129 case 9:
00130 return TxLogging::TxEventLog::LEVEL_FATAL;
00131
00132 default:
00133 return TxLogging::TxEventLog::LEVEL_UNKNOWN;
00134 }
00135 }
00136
00137 int main (int argc, char** argv) {
00138 std::string requester = "",
00139 brokerJobID = "",
00140 brokerTaskID = "",
00141 key = "",
00142 value = "",
00143 context = "",
00144 level = "";
00145
00146 if (getOpts (argc, argv, requester,
00147 brokerJobID, brokerTaskID,
00148 key, value,
00149 context, level)) {
00150 return 1;
00151 }
00152
00153 TxLogging::TxEventLog* log = TxLogging::TxEventLogFactory::create("ucm");
00154 int intBJobID = std::atoi (brokerJobID.c_str ());
00155 log->setBrokerJobID (intBJobID);
00156 log->setBrokerTaskID (brokerTaskID);
00157 log->setRequesterName (requester);
00158 log->logEvent (key, value,
00159 getLevel (level), TxLogging::TxEventLog::STATUS,
00160 context);
00161
00162 return 0;
00163 }