#include <cmlogClient.h> #include <unistd.h> #ifndef __vxworks main (int argc, char** argv) #else clientTest (char* name) #endif { int status; #ifndef __vxworks cmlogClient *client = new cmlogClient (argv[0]); #else cmlogClient *client = cmlogClient::logClient (); #endif if (client->connect () == CMLOG_SUCCESS) { cdevData::insertTag (322, "highVIn"); cdevData::insertTag (323, "highVOut"); client->setThrottle ("highVIn", 100, 25, 1.0); cdevData data; for (int i = 0; i < 100; i++) { sprintf (temp, "Test program error happend %d\n", i); status = client->postError (32, 12, CMLOG_ERROR, "EPICS", highVIn = %d highVOut = %d text = %s", i, i*100, temp); } client->disconnect (); } else printf ("Cannot connect to daemon\n"); }
The following is the sample makefile for the above C++ code (clientTest.cc) on a Unix machine (Let us assume this machine is a hpux machine).
CXX = CC CXXFLAGS = -I$(CMLOG)/include -D_CMLOG_BUILD_CLIENT OBJS = clientTest.o LIBS = -L$(CMLOG)/lib/hpux -lcmlog all: clientTest clientTest: $(OBJS) rm -f $@ $(CXX) -o $@ $(LIBS) .cc.o: rm -f $@ $(CXX) $(CXXFLAGS) -c $< -o $@ clean: rm -f *.o clientTest core *~
The following is the sample makefile for the above C++ code (clientTest.cc) on a mv162 machine (Let us assume this board is running vxWorks 5.2)
CXX = c++68k CXXFLAGS = -I$(CMLOG)/include -D_CMLOG_BUILD_CLIENT -O \ -I$(VX_VW_BASE)/h -fstrength-reduce -fforce-mem \ -finline-functions -fno-builtin -fno-for-scope -nostdinc \ -DCPU=MC68040 -DCPU_FAMILY=MC680X0 -ansi -pipe \ -Dvxworks -msoft-float OBJS = clientTest.o MAKELIB = ld68k -r -o all: clientTest clientTest: $(OBJS) rm -f $@ $(MAKELIB) -o $@ $(OBJS) .cc.o: rm -f $@ $(CXX) $(CXXFLAGS) -c $< -o $@ clean: rm -f *.o clientTest core *~
The following is a simple c code example using the CMLOG client APIs to log messages.
#include <stdio.h> #include <string.h> #include <cmlog.h> #ifndef __vxworks main (int argc, char** argv) #else client_test (char* name) #endif { int status; cmlog_client_t cl; int i = 0; char message[256]; #ifndef __vxworks cl = cmlog_open (argv[0]); #else cl = cmlog_open (name); #endif if (cl == 0) { fprintf (stderr, "cannot open cmlog client\n"); exit (1); } for (i = 0; i < 100; i++) { sprintf (message, "Test error c interface at %d\n", i); status = cmlog_logmsg (cl, 32, 12, CMLOG_ERROR, "EPICS", "value = %d status = %d text = %s", i*10, 0, message); #ifndef __vxworks sleep (1); #else taskDelay (sysClkRateGet ()); #endif } cmlog_close (cl); }
Once again we show a example Makefile for the above c test code (client_test.c).
CXX = CC CC = cc CFLAGS = -I$(CMLOG)/include -D_CMLOG_BUILD_CLIENT OBJS = client_test.o LIBS = -L$(CMLOG)/lib/hpux -lcmlog all: client_test client_test: $(OBJS) rm -f $@ $(CXX) -o $@ $(OBJS) $(LIBS) .c.o: rm -f $@ $(CC) $(CFLAGS) -c $< -o $@ clean: rm -f *~ *.o core client_test
The following is the sample makefile for the above c code (client_test.c) on a mv167 machine (Let us assume this board is running vxWorks 5.3)
CC = cc68k CFLAGS = -I$(CMLOG)/include -D_CMLOG_BUILD_CLIENT -O \ -I$(WIND_BASE)/target/h -fstrength-reduce -fforce-mem \ -finline-functions -fno-builtin -nostdinc \ -DCPU=MC68040 -DCPU_FAMILY=MC680X0 -ansi -pipe \ -Dvxworks OBJS = client_test.o MAKELIB = ld68k -r -o all: client_test client_test: $(OBJS) rm -f $@ $(MAKELIB) -o $@ $(OBJS) .c.o: rm -f $@ $(CXX) $(CFLAGS) -c $< -o $@ clean: rm -f *.o client_test core *~
The following is a simple Java code to log some data into the cmlog system.
import cmlog.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; public class cmlogClient { public static void main (String[] args) { if (args.length < 1) { System.err.println ("Usage: cmlogClient protovesion(1 or 2) [debug]"); System.exit (1); } Config.PROTOCOL_MAJOR_VERSION = Integer.valueOf (args[0]).intValue(); if (args.length >= 2) { String tstring = args[1]; if (tstring.compareTo ("debug") == 0) Config.debug = true; } Client client = new Client("cmlogClient"); try { client.connect (); }catch (ConnectException ce) { System.err.println (ce); }catch (IOException e) { System.err.println (e); } cdevData data = new cdevData (); String val; for (int i = 0; i < 100000; i++) { val = new String ("New error message is generated by java at " + String.valueOf (i)); data.remove(); data.insert ("status", i%10); data.insert ("severity", i%20); data.insert ("facility", "javatest"); data.insert ("text", val); try { client.postData (data); }catch (IOException e) { System.err.println (e); break; } try { Thread.sleep (1000); }catch (InterruptedException e) { ; } } try { client.disconnect (); }catch (IOException e) { ; } } }