156 lines
3.3 KiB
C
156 lines
3.3 KiB
C
/*************************************************************************\
|
|
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
|
|
* National Laboratory.
|
|
* Copyright (c) 2002 The Regents of the University of California, as
|
|
* Operator of Los Alamos National Laboratory.
|
|
* EPICS BASE Versions 3.13.7
|
|
* and higher are distributed subject to a Software License Agreement found
|
|
* in file LICENSE that is included with this distribution.
|
|
\*************************************************************************/
|
|
/* logClient.c,v 1.25.2.6 2004/10/07 13:37:34 mrk Exp */
|
|
/*
|
|
* Author: Jeffrey O. Hill
|
|
* Date: 080791
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <limits.h>
|
|
|
|
#define epicsExportSharedSymbols
|
|
#include "envDefs.h"
|
|
#include "errlog.h"
|
|
#include "logClient.h"
|
|
#include "iocLog.h"
|
|
|
|
#ifndef LOCAL
|
|
#define LOCAL static
|
|
#endif
|
|
|
|
int iocLogDisable = 0;
|
|
|
|
static const int iocLogSuccess = 0;
|
|
static const int iocLogError = -1;
|
|
|
|
LOCAL logClientId iocLogClient;
|
|
|
|
/*
|
|
* getConfig()
|
|
* Get Server Configuration
|
|
*/
|
|
LOCAL int getConfig (struct in_addr *pserver_addr, unsigned short *pserver_port)
|
|
{
|
|
long status;
|
|
long epics_port;
|
|
|
|
status = envGetLongConfigParam (&EPICS_IOC_LOG_PORT, &epics_port);
|
|
if (status<0) {
|
|
fprintf (stderr,
|
|
"iocLog: EPICS environment variable \"%s\" undefined\n",
|
|
EPICS_IOC_LOG_PORT.name);
|
|
return iocLogError;
|
|
}
|
|
|
|
if (epics_port<0 || epics_port>USHRT_MAX) {
|
|
fprintf (stderr,
|
|
"iocLog: EPICS environment variable \"%s\" out of range\n",
|
|
EPICS_IOC_LOG_PORT.name);
|
|
return iocLogError;
|
|
}
|
|
*pserver_port = (unsigned short) epics_port;
|
|
|
|
status = envGetInetAddrConfigParam (&EPICS_IOC_LOG_INET, pserver_addr);
|
|
if (status<0) {
|
|
fprintf (stderr,
|
|
"iocLog: EPICS environment variable \"%s\" undefined\n",
|
|
EPICS_IOC_LOG_INET.name);
|
|
return iocLogError;
|
|
}
|
|
|
|
return iocLogSuccess;
|
|
}
|
|
|
|
/*
|
|
* iocLogFlush ()
|
|
*/
|
|
void epicsShareAPI epicsShareAPI iocLogFlush ()
|
|
{
|
|
if (iocLogClient!=NULL) {
|
|
logClientFlush (iocLogClient);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* iocLogClientInit()
|
|
*/
|
|
LOCAL logClientId iocLogClientInit (void)
|
|
{
|
|
int status;
|
|
logClientId id;
|
|
struct in_addr addr;
|
|
unsigned short port;
|
|
|
|
status = getConfig (&addr, &port);
|
|
if (status) {
|
|
return NULL;
|
|
}
|
|
id = logClientCreate (addr, port);
|
|
if (id != NULL) {
|
|
errlogAddListener ( logClientSendMessage, id );
|
|
}
|
|
return id;
|
|
}
|
|
|
|
/*
|
|
* iocLogInit()
|
|
*/
|
|
int epicsShareAPI iocLogInit (void)
|
|
{
|
|
/*
|
|
* check for global disable
|
|
*/
|
|
if (iocLogDisable) {
|
|
return iocLogSuccess;
|
|
}
|
|
/*
|
|
* dont init twice
|
|
*/
|
|
if (iocLogClient!=NULL) {
|
|
return iocLogSuccess;
|
|
}
|
|
iocLogClient = iocLogClientInit ();
|
|
if (iocLogClient) {
|
|
return iocLogSuccess;
|
|
}
|
|
else {
|
|
return iocLogError;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* iocLogShow ()
|
|
*/
|
|
void epicsShareAPI iocLogShow (unsigned level)
|
|
{
|
|
if (iocLogClient!=NULL) {
|
|
logClientShow (iocLogClient, level);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* logClientInit(); deprecated
|
|
*/
|
|
logClientId epicsShareAPI logClientInit ()
|
|
{
|
|
return iocLogClientInit ();
|
|
}
|
|
|
|
/*
|
|
* logClientSendMessage (); deprecated
|
|
*/
|
|
void logClientSendMessage ( logClientId id, const char * message )
|
|
{
|
|
if ( !iocLogDisable ) {
|
|
logClientSend (id, message);
|
|
}
|
|
}
|