1287111Smarcel/* 2287111Smarcel * Copyright (c) 2014, Juniper Networks, Inc. 3287111Smarcel * All rights reserved. 4287111Smarcel * This SOFTWARE is licensed under the LICENSE provided in the 5287111Smarcel * ../Copyright file. By downloading, installing, copying, or otherwise 6287111Smarcel * using the SOFTWARE, you agree to be bound by the terms of that 7287111Smarcel * LICENSE. 8287111Smarcel * Phil Shafer, July 2014 9287111Smarcel */ 10287111Smarcel 11287111Smarcel#include <stdio.h> 12287111Smarcel#include <stdlib.h> 13287111Smarcel#include <string.h> 14287111Smarcel#include <unistd.h> 15287111Smarcel#include <errno.h> 16287111Smarcel#include <time.h> 17287111Smarcel#include <ctype.h> 18287111Smarcel#include <syslog.h> 19287111Smarcel 20287111Smarcel#include "xo.h" 21287111Smarcel 22287111Smarcelvoid 23287111Smarceltest_syslog_open (void) 24287111Smarcel{ 25287111Smarcel printf("syslog open\n"); 26287111Smarcel} 27287111Smarcel 28287111Smarcelvoid 29287111Smarceltest_syslog_close (void) 30287111Smarcel{ 31287111Smarcel printf("syslog close\n"); 32287111Smarcel} 33287111Smarcel 34287111Smarcelvoid 35287111Smarceltest_syslog_send (const char *full_msg, const char *v0_hdr, 36287111Smarcel const char *text_only) 37287111Smarcel{ 38287111Smarcel printf("{{%s}}\n{{%s}}\n{{%s}}\n\n", full_msg, v0_hdr, text_only); 39287111Smarcel} 40287111Smarcel 41287111Smarcelint 42287111Smarcelmain (int argc, char **argv) 43287111Smarcel{ 44287111Smarcel int unit_test = 1; 45287111Smarcel int fire = 0; 46287111Smarcel const char *tzone = "EST"; 47287111Smarcel 48287111Smarcel argc = xo_parse_args(argc, argv); 49287111Smarcel if (argc < 0) 50287111Smarcel return 1; 51287111Smarcel 52287111Smarcel for (argc = 1; argv[argc]; argc++) { 53287111Smarcel if (strcmp(argv[argc], "full") == 0) 54287111Smarcel unit_test = 0; 55287111Smarcel else if (strcmp(argv[argc], "fire") == 0) 56287111Smarcel fire = 1; 57287111Smarcel else if (strcmp(argv[argc], "tz") == 0) 58287111Smarcel tzone = argv[++argc]; 59287111Smarcel } 60287111Smarcel 61287111Smarcel setenv("TZ", tzone, 1); 62287111Smarcel tzset(); 63287111Smarcel 64287111Smarcel if (!fire) { 65287111Smarcel xo_set_syslog_handler(test_syslog_open, test_syslog_send, 66287111Smarcel test_syslog_close); 67287111Smarcel } 68287111Smarcel 69287111Smarcel if (unit_test) { 70287111Smarcel xo_set_unit_test_mode(1); 71287111Smarcel xo_open_log("test-program", LOG_PERROR, 0); 72287111Smarcel } 73287111Smarcel 74287111Smarcel xo_set_version("3.1.4"); 75287111Smarcel xo_set_syslog_enterprise_id(42); /* SunOs */ 76287111Smarcel 77287111Smarcel xo_open_container_h(NULL, "top"); 78287111Smarcel 79287111Smarcel xo_syslog(LOG_INFO | LOG_KERN, "animal-status", 80287111Smarcel "The {:animal} is {:state}", "snake", "loose"); 81287111Smarcel xo_syslog(LOG_INFO | LOG_MAIL, "animal-consumed", 82287111Smarcel "My {:animal} ate your {:pet}", "snake", "hamster"); 83287111Smarcel xo_syslog(LOG_NOTICE | LOG_DAEMON, "animal-talk", 84287111Smarcel "{:count/%d} {:animal} said {:quote}", 1, "owl", "\"e=m\\c[2]\""); 85287111Smarcel 86287111Smarcel /* 87287111Smarcel <165>1 2003-10-11T22:14:15.003Z mymachine.example.com 88287111Smarcel evntslog - ID47 [exampleSDID@32473 iut="3" eventSource= 89287111Smarcel "Application" eventID="1011"] BOMAn application 90287111Smarcel event log entry... 91287111Smarcel 92287111Smarcel This example is modeled after Example 1. However, this time it 93287111Smarcel contains STRUCTURED-DATA, a single element with the value 94287111Smarcel "[exampleSDID@32473 iut="3" eventSource="Application" 95287111Smarcel eventID="1011"]". The MSG itself is "An application event log 96287111Smarcel entry..." The BOM at the beginning of MSG indicates UTF-8 encoding. 97287111Smarcel */ 98287111Smarcel 99287111Smarcel xo_set_syslog_enterprise_id(32473); 100287111Smarcel xo_syslog(LOG_LOCAL4 | LOG_NOTICE, "ID47", 101287111Smarcel "{e:iut/%u}An {:event-source} {:event-id/%u} log entry", 102287111Smarcel 3, "application", 1011); 103287111Smarcel 104287111Smarcel xo_close_container_h(NULL, "top"); 105287111Smarcel 106287111Smarcel xo_finish(); 107287111Smarcel 108287111Smarcel return 0; 109287111Smarcel} 110