(file) Return to Log.c CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Executor

  1 kumpf 1.2 /*
  2           //%2006////////////////////////////////////////////////////////////////////////
  3           //
  4           // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  5           // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  6           // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  7           // IBM Corp.; EMC Corporation, The Open Group.
  8           // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  9           // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 10           // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 11           // EMC Corporation; VERITAS Software Corporation; The Open Group.
 12           // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 13           // EMC Corporation; Symantec Corporation; The Open Group.
 14           //
 15           // Permission is hereby granted, free of charge, to any person obtaining a copy
 16           // of this software and associated documentation files (the "Software"), to
 17           // deal in the Software without restriction, including without limitation the
 18           // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 19           // sell copies of the Software, and to permit persons to whom the Software is
 20           // furnished to do so, subject to the following conditions:
 21           // 
 22 kumpf 1.2 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 23           // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 24           // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 25           // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 26           // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 27           // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 28           // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 29           // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 30           //
 31           //%/////////////////////////////////////////////////////////////////////////////
 32           */
 33           #include "Log.h"
 34           #include "Defines.h"
 35           #include "Config.h"
 36           #include <syslog.h>
 37           #include <string.h>
 38           #include <stdarg.h>
 39           
 40           static enum LogLevel _level = LL_INFORMATION;
 41           
 42 kumpf 1.3 /*
 43           **==============================================================================
 44           **
 45           ** InitLogLevel()
 46           **
 47           **==============================================================================
 48           */
 49           
 50 kumpf 1.4 void InitLogLevel(void)
 51 kumpf 1.3 {
 52               char buffer[EXECUTOR_BUFFER_SIZE];
 53           
 54               if (GetConfigParam("logLevel", buffer) == 0)
 55               {
 56                   if (strcasecmp(buffer, "TRACE") == 0)
 57                       _level = LL_TRACE;
 58                   else if (strcasecmp(buffer, "INFORMATION") == 0)
 59                       _level = LL_INFORMATION;
 60                   else if (strcasecmp(buffer, "WARNING") == 0)
 61                       _level = LL_WARNING;
 62                   else if (strcasecmp(buffer, "SEVERE") == 0)
 63                       _level = LL_SEVERE;
 64                   else if (strcasecmp(buffer, "FATAL") == 0)
 65                       _level = LL_FATAL;
 66               }
 67           }
 68           
 69           /*
 70           **==============================================================================
 71           **
 72 kumpf 1.3 ** GetLogLevel()
 73           **
 74           **==============================================================================
 75           */
 76           
 77 kumpf 1.4 enum LogLevel GetLogLevel(void)
 78 kumpf 1.3 {
 79               return _level;
 80           }
 81           
 82 kumpf 1.2 void OpenLog(const char* ident)
 83           {
 84               int options = LOG_PID;
 85           
 86               openlog(ident, options, LOG_DAEMON);
 87           }
 88           
 89           void Log(enum LogLevel type, const char *format, ...)
 90           {
 91               /* These definitions are consistent with System::syslog in
 92                  SystemPOSIX.cpp. */
 93               static int _priorities[] =
 94               {
 95                   LOG_CRIT, /* LL_FATAL, */
 96                   LOG_ERR, /* LL_SEVERE */
 97                   LOG_WARNING, /* LL_WARNING */
 98                   LOG_INFO, /* LL_INFORMATION */
 99                   LOG_DEBUG, /* LL_TRACE */
100               };
101           
102               /* This array maps Pegasus "log levels" to syslog priorities. */
103 kumpf 1.2 
104               if ((int)type <= (int)_level)
105               {
106                   va_list ap;
107                   char buffer[EXECUTOR_BUFFER_SIZE];
108           
109                   va_start(ap, format);
110                   /* Flawfinder: ignore */
111 kumpf 1.3         vsprintf(buffer, format, ap);
112 kumpf 1.2         va_end(ap);
113           
114                   syslog(_priorities[(int)type], "%s", buffer);
115               }
116           }

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2