00001 #include "auc-md.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 mdLogWork[256];
00014 Category &root = Category::getRoot(),
00015 &md_core = Category::getInstance(std::string("md_core")),
00016 &md_dbug = Category::getInstance(std::string("md_dbug")),
00017 &md_devl = Category::getInstance(std::string("md_devl"));
00018 PatternLayout *layout;
00019 char *logPath,*mainLogFileName,xmlrpcLogFileName;
00020
00021 void mdLogger::init() {
00022
00023 const char *mainLogFileName = "auc-md.log",
00024 *xmlrpcLogFileName = "auc-xmlrpc.log";
00025
00026 logPath = new char [strlen(thisConfig->logPath) +
00027 strlen(xmlrpcLogFileName) + 2];
00028
00029 strcpy(logPath,thisConfig->logPath);
00030 strcat(logPath,"/");
00031 strcat(logPath,xmlrpcLogFileName);
00032
00033 thisConfig->xmlrpcLogpath = logPath;
00034
00035 logPath = new char [strlen(thisConfig->logPath) +
00036 strlen(mainLogFileName) + 1];
00037
00038 strcpy(logPath,thisConfig->logPath);
00039 strcat(logPath,"/");
00040 strcat(logPath,mainLogFileName);
00041
00042 thisConfig->logPath = logPath;
00043
00044 app = new FileAppender("default", std::string(logPath));
00045 layout = new PatternLayout();
00046 layout->setConversionPattern("%d %p %c %x: %m%n");
00047 app->setLayout(layout);
00048
00049 root.addAppender(app);
00050 root.setPriority(Priority::ERROR);
00051
00052 md_core.setPriority(Priority::INFO);
00053 md_core.setAdditivity(true);
00054
00055 md_dbug.setPriority(Priority::DEBUG);
00056 md_dbug.setAdditivity(true);
00057
00058 md_devl.setPriority(Priority::NOTSET);
00059 md_devl.setAdditivity(true);
00060
00061 }
00062 void mdLogger::logN(int n, const char *format, ...) {
00063 char buff[1024];
00064 void *args[4];
00065 int nthArg = 0;
00066 va_list lm;
00067
00068 va_start(lm,format);
00069 for (;nthArg<n;nthArg++) args[nthArg]=va_arg(lm,void *);
00070 va_end(lm);
00071
00072 switch(n) {
00073 case 0:
00074 strcpy(buff,format);
00075 break;
00076 case 1:
00077 sprintf(buff,format,args[0]);
00078 break;
00079 case 2:
00080 sprintf(buff,format,args[0],args[1]);
00081 break;
00082 case 3:
00083 sprintf(buff,format,args[0],args[1],args[2]);
00084 break;
00085 case 4:
00086 sprintf(buff,format,args[0],args[1],args[2],args[3]);
00087 break;
00088 case 5:
00089 sprintf(buff,format,args[0],args[1],args[2],args[3],args[4]);
00090 break;
00091 }
00092 md_core.info(buff);
00093 }
00094 void mdLogger::logNdebug(int m, int n, const char *format, ...) {
00095 char buff[1024];
00096 void *args[6];
00097 int nthArg = 0;
00098 va_list lm;
00099
00100 if (m < 0 || m > thisConfig->debugThreshold) return;
00101
00102 va_start(lm,format);
00103 for (;nthArg<n;nthArg++) args[nthArg]=va_arg(lm,void *);
00104 va_end(lm);
00105
00106 switch(n) {
00107 case 0:
00108 strcpy(buff,format);
00109 break;
00110 case 1:
00111 sprintf(buff,format,args[0]);
00112 break;
00113 case 2:
00114 sprintf(buff,format,args[0],args[1]);
00115 break;
00116 case 3:
00117 sprintf(buff,format,args[0],args[1],args[2]);
00118 break;
00119 case 4:
00120 sprintf(buff,format,args[0],args[1],args[2],args[3]);
00121 break;
00122 case 5:
00123 sprintf(buff,format,args[0],args[1],args[2],args[3],args[4]);
00124 break;
00125 }
00126 md_dbug.warn(buff);
00127 }
00128 void mdLogger::logNdev(int n, const char *format, ...) {
00129 char buff[1024];
00130 void *args[5];
00131 int nthArg = 0;
00132 va_list lm;
00133
00134 va_start(lm,format);
00135 for (;nthArg<n;nthArg++) args[nthArg]=va_arg(lm,void *);
00136 va_end(lm);
00137
00138 switch(n) {
00139 case 0:
00140 strcpy(buff,format);
00141 break;
00142 case 1:
00143 sprintf(buff,format,args[0]);
00144 break;
00145 case 2:
00146 sprintf(buff,format,args[0],args[1]);
00147 break;
00148 case 3:
00149 sprintf(buff,format,args[0],args[1],args[2]);
00150 break;
00151 case 4:
00152 sprintf(buff,format,args[0],args[1],args[2],args[3]);
00153 break;
00154 case 5:
00155 sprintf(buff,format,args[0],args[1],args[2],args[3],args[4]);
00156 break;
00157 }
00158 md_devl.warn(buff);
00159 }