1*1d4b38e0Srsmaeda /* 2*1d4b38e0Srsmaeda * CDDL HEADER START 3*1d4b38e0Srsmaeda * 4*1d4b38e0Srsmaeda * The contents of this file are subject to the terms of the 5*1d4b38e0Srsmaeda * Common Development and Distribution License (the "License"). 6*1d4b38e0Srsmaeda * You may not use this file except in compliance with the License. 7*1d4b38e0Srsmaeda * 8*1d4b38e0Srsmaeda * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*1d4b38e0Srsmaeda * or http://www.opensolaris.org/os/licensing. 10*1d4b38e0Srsmaeda * See the License for the specific language governing permissions 11*1d4b38e0Srsmaeda * and limitations under the License. 12*1d4b38e0Srsmaeda * 13*1d4b38e0Srsmaeda * When distributing Covered Code, include this CDDL HEADER in each 14*1d4b38e0Srsmaeda * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*1d4b38e0Srsmaeda * If applicable, add the following below this CDDL HEADER, with the 16*1d4b38e0Srsmaeda * fields enclosed by brackets "[]" replaced with your own identifying 17*1d4b38e0Srsmaeda * information: Portions Copyright [yyyy] [name of copyright owner] 18*1d4b38e0Srsmaeda * 19*1d4b38e0Srsmaeda * CDDL HEADER END 20*1d4b38e0Srsmaeda */ 21*1d4b38e0Srsmaeda 22*1d4b38e0Srsmaeda /* 23*1d4b38e0Srsmaeda * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24*1d4b38e0Srsmaeda * Use is subject to license terms. 25*1d4b38e0Srsmaeda */ 26*1d4b38e0Srsmaeda 27*1d4b38e0Srsmaeda #pragma ident "%Z%%M% %I% %E% SMI" 28*1d4b38e0Srsmaeda 29*1d4b38e0Srsmaeda /* 30*1d4b38e0Srsmaeda * Logging support for the DR Daemon 31*1d4b38e0Srsmaeda */ 32*1d4b38e0Srsmaeda 33*1d4b38e0Srsmaeda #include <stdio.h> 34*1d4b38e0Srsmaeda #include <stdarg.h> 35*1d4b38e0Srsmaeda #include <syslog.h> 36*1d4b38e0Srsmaeda 37*1d4b38e0Srsmaeda #include "drd.h" 38*1d4b38e0Srsmaeda 39*1d4b38e0Srsmaeda #define DRD_MAX_MSG_LEN 512 40*1d4b38e0Srsmaeda 41*1d4b38e0Srsmaeda static char *log_prio_str[] = { 42*1d4b38e0Srsmaeda "EMERG: ", /* LOG_EMERG */ 43*1d4b38e0Srsmaeda "ALERT: ", /* LOG_ALERT */ 44*1d4b38e0Srsmaeda "CRIT: ", /* LOG_CRIT */ 45*1d4b38e0Srsmaeda "ERROR: ", /* LOG_ERR */ 46*1d4b38e0Srsmaeda "WARNING: ", /* LOG_WARNING */ 47*1d4b38e0Srsmaeda "NOTICE: ", /* LOG_NOTICE */ 48*1d4b38e0Srsmaeda "INFO: ", /* LOG_INFO */ 49*1d4b38e0Srsmaeda "" /* LOG_DEBUG */ 50*1d4b38e0Srsmaeda }; 51*1d4b38e0Srsmaeda 52*1d4b38e0Srsmaeda static void 53*1d4b38e0Srsmaeda drd_log_msg(int priority, char *fmt, va_list vap) 54*1d4b38e0Srsmaeda { 55*1d4b38e0Srsmaeda char msg_str[DRD_MAX_MSG_LEN]; 56*1d4b38e0Srsmaeda 57*1d4b38e0Srsmaeda (void) vsnprintf(msg_str, DRD_MAX_MSG_LEN, fmt, vap); 58*1d4b38e0Srsmaeda 59*1d4b38e0Srsmaeda if (!drd_daemonized) { 60*1d4b38e0Srsmaeda fprintf(stderr, "%s%s\n", log_prio_str[priority], msg_str); 61*1d4b38e0Srsmaeda return; 62*1d4b38e0Srsmaeda } 63*1d4b38e0Srsmaeda 64*1d4b38e0Srsmaeda syslog(priority, msg_str); 65*1d4b38e0Srsmaeda } 66*1d4b38e0Srsmaeda 67*1d4b38e0Srsmaeda void 68*1d4b38e0Srsmaeda drd_err(char *fmt, ...) 69*1d4b38e0Srsmaeda { 70*1d4b38e0Srsmaeda va_list vap; 71*1d4b38e0Srsmaeda 72*1d4b38e0Srsmaeda va_start(vap, fmt); 73*1d4b38e0Srsmaeda drd_log_msg(LOG_ERR, fmt, vap); 74*1d4b38e0Srsmaeda va_end(vap); 75*1d4b38e0Srsmaeda } 76*1d4b38e0Srsmaeda 77*1d4b38e0Srsmaeda void 78*1d4b38e0Srsmaeda drd_info(char *fmt, ...) 79*1d4b38e0Srsmaeda { 80*1d4b38e0Srsmaeda va_list vap; 81*1d4b38e0Srsmaeda 82*1d4b38e0Srsmaeda va_start(vap, fmt); 83*1d4b38e0Srsmaeda drd_log_msg(LOG_INFO, fmt, vap); 84*1d4b38e0Srsmaeda va_end(vap); 85*1d4b38e0Srsmaeda } 86*1d4b38e0Srsmaeda 87*1d4b38e0Srsmaeda void 88*1d4b38e0Srsmaeda drd_dbg(char *fmt, ...) 89*1d4b38e0Srsmaeda { 90*1d4b38e0Srsmaeda va_list vap; 91*1d4b38e0Srsmaeda 92*1d4b38e0Srsmaeda if (!drd_debug) { 93*1d4b38e0Srsmaeda /* not debugging */ 94*1d4b38e0Srsmaeda return; 95*1d4b38e0Srsmaeda } 96*1d4b38e0Srsmaeda 97*1d4b38e0Srsmaeda va_start(vap, fmt); 98*1d4b38e0Srsmaeda drd_log_msg(LOG_DEBUG, fmt, vap); 99*1d4b38e0Srsmaeda va_end(vap); 100*1d4b38e0Srsmaeda } 101