OpenClovis Logo

clLogApi.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002-2012 OpenClovis Solutions Inc. All Rights Reserved.
3  *
4  * This file is available under a commercial license from the
5  * copyright holder or the GNU General Public License Version 2.0.
6  *
7  * The source code for this program is not published or otherwise
8  * divested of its trade secrets, irrespective of what has been
9  * deposited with the U.S. Copyright office.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * General Public License for more details.
15  *
16  * For more information, see the file COPYING provided with this
17  * material.
18  */
19 
32 #ifndef _CL_LOG_API_H_
33 #define _CL_LOG_API_H_
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 #include <sys/types.h> /* For getpid() */
40 #include <unistd.h>
41 
42 #include <string.h>
43 #include <stdio.h>
44 #include <stdarg.h>
45 #include <clTimerApi.h>
46 #include <clCommon.h>
47 #include <clDbg.h>
48 #include <clLogUtilApi.h>
49 
50 /*********************************
51  Data Types
52 *********************************/
53 
57 typedef ClHandleT ClLogHandleT;
58 
63 typedef ClHandleT ClLogStreamHandleT;
64 
69 typedef ClHandleT ClLogFileHandleT;
70 
74 #define CL_LOG_STREAM_NAME_MAX_LENGTH 128
75 
78 #define CL_LOG_SLINE_MSG_LEN 256
79 
80 
86 typedef enum
87 {
97 
102 typedef enum
103 {
122 
126 typedef struct
127 {
131  ClCharT *fileName;
135  ClCharT *fileLocation;
139  ClUint32T fileUnitSize;
143  ClUint32T recordSize;
147  ClBoolT haProperty;
156  ClUint32T maxFilesRotated;
160  ClUint32T flushFreq;
169  ClWaterMarkT waterMark;
170 
171  /*
172  * Syslog enabler for the stream.
173  */
174  ClBoolT syslog;
176 
181 #define CL_LOG_STREAM_CREATE 0x1
182 
186 typedef ClUint8T ClLogStreamOpenFlagsT;
187 
191 typedef struct
192 {
208  ClUint16T streamId;
214 
219 typedef struct
220 {
236  ClUint16T streamId;
238 
243 #define CL_LOG_HANDLER_WILL_ACK 0x1
244 
249 typedef ClUint8T ClLogStreamHandlerFlagsT;
250 
251 typedef enum
252  {
285  CL_LOG_SEV_DEBUG1 = CL_LOG_SEV_DEBUG,
286  CL_LOG_SEV_DEBUG2,
287  CL_LOG_SEV_DEBUG3,
288  CL_LOG_SEV_DEBUG4,
289  CL_LOG_SEV_DEBUG5,
293  CL_LOG_SEV_TRACE = CL_LOG_SEV_DEBUG5,
294  CL_LOG_SEV_DEBUG6,
295  CL_LOG_SEV_DEBUG7,
296  CL_LOG_SEV_DEBUG8,
297  CL_LOG_SEV_DEBUG9,
301  CL_LOG_SEV_MAX = CL_LOG_SEV_DEBUG9
302  } ClLogSeverityT;
303 
304 #if 0
305 
308 #define CL_LOG_SEV_EMERGENCY 0x1
309 
312 #define CL_LOG_SEV_ALERT 0x2
313 
316 #define CL_LOG_SEV_CRITICAL 0x3
317 
320 #define CL_LOG_SEV_ERROR 0x4
321 
324 #define CL_LOG_SEV_WARNING 0x5
325 
328 #define CL_LOG_SEV_NOTICE 0x6
329 
332 #define CL_LOG_SEV_INFO 0x7
333 
336 #define CL_LOG_SEV_DEBUG 0x8
337 
340 #define CL_LOG_SEV_TRACE CL_LOG_TRACE
341 
344 #define CL_LOG_SEV_MAX CL_LOG_DEBUG9
345 #endif
346 
352 typedef ClUint16T ClLogSeverityFilterT;
353 
357 #define CL_LOG_FILTER_ASSIGN 0x1
358 
362 #define CL_LOG_FILTER_MERGE_ADD 0x2
363 
367 #define CL_LOG_FILTER_MERGE_DELETE 0x3
368 
372 typedef ClUint8T ClLogFilterFlagsT;
373 
374 
378 typedef struct
379 {
383  ClLogSeverityFilterT severityFilter;
387  ClUint16T msgIdSetLength;
391  ClUint8T *pMsgIdSet;
395  ClUint16T compIdSetLength;
399  ClUint8T *pCompIdSet;
400 } ClLogFilterT;
401 
455 typedef void (*ClLogStreamOpenCallbackT)(
456  CL_IN ClInvocationT invocation,
457  CL_IN ClLogStreamHandleT hStream,
458  CL_IN ClRcT rc);
459 
489 typedef void (*ClLogFilterSetCallbackT)(
490  CL_IN ClLogStreamHandleT hStream,
491  CL_IN ClLogFilterT filter);
492 
533  CL_IN ClLogStreamHandleT hStream,
534  CL_IN ClUint64T seqNum,
535  CL_IN ClUint32T numRecords,
536  CL_IN ClPtrT pRecords);
537 
542 typedef struct
543 {
559 #if 0
560  ClLogWriteCallbackT clLogWriteCallback;
561 #endif
563 
564 
568 #define CL_LOG_MSGID_BUFFER 0
569 
573 #define CL_LOG_MSGID_PRINTF_FMT 1
574 
578 #define CL_LOG_TAG_TERMINATE 0
579 
589 #define CL_LOG_TAG_BASIC_SIGNED 0x1
590 
593 #define CL_LOG_TAG_BASIC_UNSIGNED 0x2
594 
597 #define CL_LOG_TAG_STRING 0x3
598 
602 #define CL_LOG_TLV_UINT8(var) \
603  CL_LOG_TAG_BASIC_UNSIGNED, sizeof( var ), &(var)
604 
608 #define CL_LOG_TLV_INT8(var) \
609  CL_LOG_TAG_BASIC_SIGNED, sizeof( var ), &(var)
610 
614 #define CL_LOG_TLV_UINT16(var) \
615  CL_LOG_TAG_BASIC_UNSIGNED, sizeof( var ), &(var)
616 
620 #define CL_LOG_TLV_INT16(var) \
621  CL_LOG_TAG_BASIC_SIGNED, sizeof( var ), &(var)
622 
626 #define CL_LOG_TLV_UINT32(var) \
627  CL_LOG_TAG_BASIC_UNSIGNED, sizeof( var ), &(var)
628 
632 #define CL_LOG_TLV_INT32(var) \
633  CL_LOG_TAG_BASIC_SIGNED, sizeof( var ), &(var)
634 
638 #define CL_LOG_TLV_UINT64(var) \
639  CL_LOG_TAG_BASIC_UNSIGNED, sizeof( var ), &(var)
640 
644 #define CL_LOG_TLV_INT64(var) \
645  CL_LOG_TAG_BASIC_SIGNED, sizeof( var ), &(var)
646 
650 #define CL_LOG_TLV_STRING(var) \
651  CL_LOG_TAG_STRING, (strlen( var ) + 1), (var)
652 
653 
708 extern ClRcT
709 clLogInitialize(CL_OUT ClLogHandleT *phLog,
710  CL_IN const ClLogCallbacksT *pLogCallbacks,
711  CL_INOUT ClVersionT *pVersion);
712 
764 extern ClRcT clLogFinalize(CL_IN ClLogHandleT hLog);
765 
882 extern ClRcT
883 clLogStreamOpen(CL_IN ClLogHandleT hLog,
884  CL_IN ClNameT streamName,
885  CL_IN ClLogStreamScopeT streamScope,
886  CL_IN ClLogStreamAttributesT *pStreamAttr,
887  CL_IN ClLogStreamOpenFlagsT streamOpenFlags,
888  CL_IN ClTimeT timeout,
889  CL_OUT ClLogStreamHandleT *phStream);
943 extern ClRcT
944 clLogStreamClose(CL_IN ClLogStreamHandleT hStream);
945 
1090 extern ClRcT
1091 clLogWriteAsync(ClLogStreamHandleT hStream,
1092  ClLogSeverityT severity,
1093  ClUint16T serviceId,
1094  ClUint16T msgId,
1095  ...);
1096 
1097 extern ClRcT
1098 clLogWriteAsyncWithHeader(ClLogStreamHandleT hStream,
1099  ClLogSeverityT severity,
1100  ClUint16T serviceId,
1101  ClUint16T msgId,
1102  ...);
1103 
1104 extern ClRcT
1105 clLogWriteAsyncWithContextHeader(ClLogStreamHandleT hStream,
1106  ClLogSeverityT severity,
1107  const ClCharT *pArea,
1108  const ClCharT *pContext,
1109  ClUint16T serviceId,
1110  ClUint16T msgId,
1111  ...);
1112 
1171 extern ClRcT
1172 clLogFilterSet(CL_IN ClLogStreamHandleT hStream,
1173  CL_IN ClLogFilterFlagsT filterFlags,
1174  CL_IN ClLogFilterT filter);
1175 
1243 extern ClRcT
1244 clLogHandlerRegister(CL_IN ClLogHandleT hLog,
1245  CL_IN ClNameT streamName,
1246  CL_IN ClLogStreamScopeT streamScope,
1247  CL_IN ClNameT nodeName,
1248  CL_IN ClLogStreamHandlerFlagsT handlerFlags,
1249  CL_OUT ClLogHandleT *phStream);
1302  extern ClRcT
1303  clLogHandlerDeregister(CL_IN ClLogStreamHandleT hStream);
1304 
1361  extern ClRcT
1362  clLogHandlerRecordAck(CL_IN ClLogStreamHandleT hStream,
1363  CL_IN ClUint64T sequenceNumber,
1364  CL_IN ClUint32T numRecords);
1365 
1429 extern ClRcT
1430 clLogFileOpen(CL_IN ClLogHandleT hLog,
1431  CL_IN ClCharT *fileName,
1432  CL_IN ClCharT *fileLocation,
1433  CL_IN ClBoolT isDelete,
1434  CL_IN ClLogFileHandleT *phFile);
1435 
1478 extern ClRcT
1479 clLogFileClose(CL_IN ClLogFileHandleT hFileHdlr);
1480 
1545 extern ClRcT
1546 clLogFileMetaDataGet(CL_IN ClLogFileHandleT hFileHdlr,
1547  CL_OUT ClLogStreamAttributesT *pStreamAttr,
1548  CL_OUT ClUint32T *pNumStreams,
1549  CL_OUT ClLogStreamMapT **ppLogStreams);
1550 
1621 extern ClRcT
1622 clLogFileRecordsGet(CL_IN ClLogFileHandleT hFileHdlr,
1623  CL_OUT ClTimeT *pStarTime,
1624  CL_OUT ClTimeT *pEndTime,
1625  CL_OUT ClUint32T *pNumRecords,
1626  CL_OUT ClPtrT *pLogRecords);
1682 extern ClRcT
1683 clLogStreamListGet(CL_IN ClLogHandleT hLog,
1684  CL_OUT ClUint32T *pNumStreams,
1685  CL_OUT ClLogStreamInfoT **ppLogStreams);
1686 
1713  #define clLogWrite(streamHdl, severity, libName, ...)\
1714  do\
1715  {\
1716  clLog(severity, libName, CL_LOG_CONTEXT_UNSPECIFIED, __VA_ARGS__);\
1717  } while(0)
1718 
1719 ClRcT
1720 clLogWriteDeferred(ClHandleT handle,
1721  ClLogSeverityT severity,
1722  ClUint16T servicId,
1723  ClUint16T msgId,
1724  ClCharT *pFmtStr,
1725  ...) CL_PRINTF_FORMAT(5, 6);
1726 
1727 ClRcT
1728 clLogWriteDeferredForce(ClHandleT handle,
1729  ClLogSeverityT severity,
1730  ClUint16T servicId,
1731  ClUint16T msgId,
1732  ClCharT *pFmtStr,
1733  ...) CL_PRINTF_FORMAT(5, 6);
1734 
1735 extern ClRcT
1736 clLogMsgWrite(ClHandleT streamHdl,
1737  ClLogSeverityT severity,
1738  ClUint16T serviceId,
1739  const ClCharT *pArea,
1740  const ClCharT *pContext,
1741  const ClCharT *pFileName,
1742  ClUint32T lineNum,
1743  const ClCharT *pFmtStr,
1744  ...) CL_PRINTF_FORMAT(8, 9);
1745 
1746 extern ClRcT
1747 clLogMsgWriteDeferred(ClHandleT streamHdl,
1748  ClLogSeverityT severity,
1749  ClUint16T serviceId,
1750  const ClCharT *pArea,
1751  const ClCharT *pContext,
1752  const ClCharT *pFileName,
1753  ClUint32T lineNum,
1754  const ClCharT *pFmtStr,
1755  ...) CL_PRINTF_FORMAT(8, 9);
1756 
1757 extern ClRcT
1758 clLogMsgWriteConsole(ClHandleT streamHdl,
1759  ClLogSeverityT severity,
1760  ClUint16T serviceId,
1761  const ClCharT *pArea,
1762  const ClCharT *pContext,
1763  const ClCharT *pFileName,
1764  ClUint32T lineNum,
1765  const ClCharT *pFmtStr,
1766  ...) CL_PRINTF_FORMAT(8, 9);
1767 
1768 ClRcT clLogSeverityFilterToValueGet(ClLogSeverityFilterT filter, ClLogSeverityT* pSeverity);
1769 ClRcT clLogSeverityValueToFilterGet(ClLogSeverityT severity, ClLogSeverityFilterT* pFilter);
1770 
1771 ClRcT clLogStreamFilterSet(ClNameT *pStreamName,
1772  ClLogStreamScopeT streamScope,
1773  ClNameT *pStreamScopeNode,
1774  ClLogFilterFlagsT filterFlags,
1775  ClLogFilterT filter);
1776 
1777 ClRcT
1778 clLogStreamFilterGet(ClNameT *pStreamName,
1779  ClLogStreamScopeT streamScope,
1780  ClNameT *pStreamScopeNode,
1781  ClLogFilterT *pFilter);
1782 
1784 clLogSeverityGet(const ClCharT *pSevName);
1785 
1786 #include <ipi/clLogIpiWrap.h>
1787 #ifdef __cplusplus
1788 }
1789 #endif
1790 
1791 #endif /*_CL_LOG_API_H_*/
1792 

Generated on Tue Jan 10 10:29:15 PST 2012 for OpenClovis SDK using Doxygen