00001 #include "auc-cd.h"
00002
00003 #include "log4cpp/Category.hh"
00004 #include "log4cpp/Appender.hh"
00005 #include "log4cpp/FileAppender.hh"
00006 #include "log4cpp/Layout.hh"
00007 #include "log4cpp/BasicLayout.hh"
00008 #include "log4cpp/Priority.hh"
00009
00010 using namespace log4cpp;
00011
00012 Appender *app;
00013 char cdLogWork[256];
00014 Category &root = Category::getRoot(),
00015 &cd_core = Category::getInstance(std::string("cd_core")),
00016 &cd_dbug = Category::getInstance(std::string("cd_dbug")),
00017 &cd_devl = Category::getInstance(std::string("cd_devl"));
00018 PatternLayout *layout;
00019
00020 void cdLogger::init(const char *baseName) {
00021
00022 const char *defaultBasename = "auc-cd-99";
00023 char mainLogFileName[128];
00024
00025 if (!strlen(baseName)) strcpy(mainLogFileName,defaultBasename);
00026 else strcpy(mainLogFileName,baseName);
00027 strcat(mainLogFileName,".log");
00028
00029 strcpy(cdLogWork,thisConfig->logPath);
00030 strcat(cdLogWork,"/");
00031 strcat(cdLogWork,mainLogFileName);
00032 strcpy(thisConfig->logPath,cdLogWork);
00033 logPath = cdLogWork;
00034
00035 app = new FileAppender("default", std::string(logPath));
00036 layout = new PatternLayout();
00037 layout->setConversionPattern("%d %p %c %x: %m%n");
00038 app->setLayout(layout);
00039
00040 root.addAppender(app);
00041 root.setPriority(Priority::ERROR);
00042
00043 cd_core.setPriority(Priority::INFO);
00044 cd_core.setAdditivity(true);
00045
00046 cd_dbug.setPriority(Priority::DEBUG);
00047 cd_dbug.setAdditivity(true);
00048
00049 cd_devl.setPriority(Priority::NOTSET);
00050 cd_devl.setAdditivity(true);
00051
00052 }
00053 void cdLogger::logN(int n, const char *format, ...) {
00054 char buff[1024];
00055 void *args[4];
00056 int nthArg = 0;
00057 va_list lm;
00058
00059 va_start(lm,format);
00060 for (;nthArg<n;nthArg++) args[nthArg]=va_arg(lm,void *);
00061 va_end(lm);
00062
00063 switch(n) {
00064 case 0:
00065 strcpy(buff,format);
00066 break;
00067 case 1:
00068 sprintf(buff,format,args[0]);
00069 break;
00070 case 2:
00071 sprintf(buff,format,args[0],args[1]);
00072 break;
00073 case 3:
00074 sprintf(buff,format,args[0],args[1],args[2]);
00075 break;
00076 case 4:
00077 sprintf(buff,format,args[0],args[1],args[2],args[3]);
00078 break;
00079 case 5:
00080 sprintf(buff,format,args[0],args[1],args[2],args[3],args[4]);
00081 break;
00082 }
00083 cd_core.info(buff);
00084 }
00085 void cdLogger::logNdebug(int n, const char *format, ...) {
00086 char buff[1024];
00087 void *args[5];
00088 int nthArg = 0;
00089 va_list lm;
00090
00091 va_start(lm,format);
00092 for (;nthArg<n;nthArg++) args[nthArg]=va_arg(lm,void *);
00093 va_end(lm);
00094
00095 switch(n) {
00096 case 0:
00097 strcpy(buff,format);
00098 break;
00099 case 1:
00100 sprintf(buff,format,args[0]);
00101 break;
00102 case 2:
00103 sprintf(buff,format,args[0],args[1]);
00104 break;
00105 case 3:
00106 sprintf(buff,format,args[0],args[1],args[2]);
00107 break;
00108 case 4:
00109 sprintf(buff,format,args[0],args[1],args[2],args[3]);
00110 break;
00111 case 5:
00112 sprintf(buff,format,args[0],args[1],args[2],args[3],args[4]);
00113 break;
00114 }
00115 cd_dbug.warn(buff);
00116 }
00117 void cdLogger::logNdebug(int m, int n, const char *format, ...) {
00118 char buff[1024];
00119 void *args[5];
00120 int nthArg = 0;
00121 va_list lm;
00122
00123 if (m < 0 || m > thisConfig->debugThreshold) return;
00124
00125 va_start(lm,format);
00126 for (;nthArg<n;nthArg++) args[nthArg]=va_arg(lm,void *);
00127 va_end(lm);
00128
00129 switch(n) {
00130 case 0:
00131 strcpy(buff,format);
00132 break;
00133 case 1:
00134 sprintf(buff,format,args[0]);
00135 break;
00136 case 2:
00137 sprintf(buff,format,args[0],args[1]);
00138 break;
00139 case 3:
00140 sprintf(buff,format,args[0],args[1],args[2]);
00141 break;
00142 case 4:
00143 sprintf(buff,format,args[0],args[1],args[2],args[3]);
00144 break;
00145 case 5:
00146 sprintf(buff,format,args[0],args[1],args[2],args[3],args[4]);
00147 break;
00148 }
00149 cd_dbug.warn(buff);
00150 }
00151 void cdLogger::logNdev(int n, const char *format, ...) {
00152 char buff[1024];
00153 void *args[5];
00154 int nthArg = 0;
00155 va_list lm;
00156
00157 va_start(lm,format);
00158 for (;nthArg<n;nthArg++) args[nthArg]=va_arg(lm,void *);
00159 va_end(lm);
00160
00161 switch(n) {
00162 case 0:
00163 strcpy(buff,format);
00164 break;
00165 case 1:
00166 sprintf(buff,format,args[0]);
00167 break;
00168 case 2:
00169 sprintf(buff,format,args[0],args[1]);
00170 break;
00171 case 3:
00172 sprintf(buff,format,args[0],args[1],args[2]);
00173 break;
00174 case 4:
00175 sprintf(buff,format,args[0],args[1],args[2],args[3]);
00176 break;
00177 case 5:
00178 sprintf(buff,format,args[0],args[1],args[2],args[3],args[4]);
00179 break;
00180 }
00181 cd_devl.warn(buff);
00182 }