00001 #ifndef logging_log_svc_handler_H 00002 #define logging_log_svc_handler_H 00003 /******************************************************************************* 00004 * ALMA - Atacama Large Millimiter Array 00005 * (c) UNSPECIFIED - FILL IN, 2005 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 * 00021 * "@(#) $Id: loggingLogSvcHandler.h,v 1.10 2011/04/26 20:19:22 javarias Exp $" 00022 * 00023 * who when what 00024 * -------- -------- ---------------------------------------------- 00025 * dfugate 2005-04-04 created 00026 */ 00027 00028 #ifndef __cplusplus 00029 #error This is a C++ include file and cannot be used from plain C 00030 #endif 00031 00032 #include "loggingHandler.h" 00033 #include <stdarg.h> 00034 #include <ace/Log_Priority.h> 00035 00036 namespace Logging { 00037 00044 Logging::BaseLog::Priority 00045 ace2acsPriority(ACE_Log_Priority acePriority); 00046 00054 ACE_Log_Priority 00055 acs2acePriority(Logging::BaseLog::Priority acsPriority); 00056 00057 00061 class LogSvcHandler : public virtual Handler 00062 { 00063 public: 00064 // -------------------------------------------------------- 00071 LogSvcHandler(const std::string& soName); 00072 00076 virtual void 00077 log(const LogRecord&); 00078 00082 virtual std::string 00083 getName() const; 00084 00088 virtual void 00089 setLevels(Priority remotePriority, Priority localPriority, int type); 00090 00091 00092 //--------------------------------------------- 00093 //--The following section exists solely to remain 00094 //--backwards compatible with the ACS 4.0 and earlier 00095 //--logging systems. This is provided so that formatted 00096 //--(i.e., printf, scanf, etc) messages are supported. 00097 //--At some point in time this should 00098 //--be removed! 00099 //--------------------------------------------- 00100 00105 struct DeprecatedLogInfo 00106 { 00107 Priority priority; 00108 std::string message; 00109 }; 00110 00115 static const int MAX_MESSAGE_SIZE = 1000; 00116 00129 static DeprecatedLogInfo 00130 unformatted2formatted(ACE_Log_Priority messagePriority, 00131 const char *fmt, 00132 ...) 00133 #if defined(__GNUC__) 00134 __attribute__ ((format (printf, 2, 3))) 00135 #endif 00136 ; 00137 00138 private: 00142 std::string sourceObjectName_m; 00143 }; 00144 00145 }; 00146 00147 00148 #endif