xref: /titanic_53/usr/src/cmd/drd/drd_log.c (revision 1d4b38e0077763e7c9b20768eacb841957e787bc)
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