2N/A/*
2N/A * CDDL HEADER START
2N/A *
2N/A * The contents of this file are subject to the terms of the
2N/A * Common Development and Distribution License, Version 1.0 only
2N/A * (the "License"). You may not use this file except in compliance
2N/A * with the License.
2N/A *
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * or http://www.opensolaris.org/os/licensing.
2N/A * See the License for the specific language governing permissions
2N/A * and limitations under the License.
2N/A *
2N/A * When distributing Covered Code, include this CDDL HEADER in each
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A * If applicable, add the following below this CDDL HEADER, with the
2N/A * fields enclosed by brackets "[]" replaced with your own identifying
2N/A * information: Portions Copyright [yyyy] [name of copyright owner]
2N/A *
2N/A * CDDL HEADER END
2N/A */
2N/A/*
2N/A * ident "%Z%%M% %I% %E% SMI"
2N/A *
2N/A * Copyright (c) 1999,2001 by Sun Microsystems, Inc.
2N/A * All rights reserved.
2N/A *
2N/A */
2N/A
2N/Apackage com.sun.slp;
2N/A
2N/Aimport java.io.*;
2N/A
2N/A/**
2N/A * A logging class which writes to UNIX syslog. This class can be dynamically
2N/A * loaded by SLPConfig and used as the log object by the writeLog and
2N/A * writeLogLine methods. Note that we need to use JNI here to call the
2N/A * native syslog. This is because syslog can be listening on any port
2N/A * mapped to 'syslog' in the services table, but Java provides no way to
2N/A * query this mapping.
2N/A *
2N/A * This class does not actually write anything until the flush() method
2N/A * in invoked; this will write the concatenation of all messages
2N/A * passed to the write() method since the last invokation of flush().
2N/A *
2N/A * The actual logging class used can be controlled via the
2N/A * sun.net.slp.loggerClass property.
2N/A *
2N/A * See also the SLPLog (in slpd.java) and StderrLog classes.
2N/A */
2N/A
2N/Aclass Syslog extends Writer {
2N/A
2N/A private StringBuffer buf;
2N/A
2N/A public Syslog() {
2N/A buf = new StringBuffer();
2N/A
2N/A // can't just get SLPConfig; causes stack recursion
2N/A tracingOn = Boolean.getBoolean("sun.net.slp.traceALL") ||
2N/A Boolean.getBoolean("net.slp.traceReg") ||
2N/A Boolean.getBoolean("net.slp.traceMsg") ||
2N/A Boolean.getBoolean("net.slp.traceDrop") ||
2N/A Boolean.getBoolean("net.slp.traceDATraffic");
2N/A }
2N/A
2N/A public void write(char[] cbuf, int off, int len) throws IOException {
2N/A buf.append(cbuf, off, len);
2N/A }
2N/A
2N/A public void flush() {
2N/A int priority;
2N/A if (tracingOn) {
2N/A priority = 6; // LOG_INFO
2N/A } else {
2N/A priority = 2; // LOG_CRIT
2N/A }
2N/A
2N/A syslog(priority, buf.toString());
2N/A buf = new StringBuffer();
2N/A }
2N/A
2N/A public void close() {
2N/A }
2N/A
2N/A private native void syslog(int priority, String message);
2N/A
2N/A // The JNI implementation is in libslp.so.
2N/A static {
2N/A System.load("/usr/lib/libslp.so");
2N/A }
2N/A
2N/A private boolean tracingOn;
2N/A}