| Method from org.apache.log4j.net.SyslogAppender Detail: |
public void activateOptions() {
if (header) {
getLocalHostname();
}
if (layout != null && layout.getHeader() != null) {
sendLayoutMessage(layout.getHeader());
}
layoutHeaderChecked = true;
}
This method returns immediately as options are activated when they
are set. |
public void append(LoggingEvent event) {
if(!isAsSevereAsThreshold(event.getLevel()))
return;
// We must not attempt to append if sqw is null.
if(sqw == null) {
errorHandler.error("No syslog host is set for SyslogAppedender named \""+
this.name+"\".");
return;
}
if (!layoutHeaderChecked) {
if (layout != null && layout.getHeader() != null) {
sendLayoutMessage(layout.getHeader());
}
layoutHeaderChecked = true;
}
String hdr = getPacketHeader(event.timeStamp);
String packet = layout.format(event);
if(facilityPrinting || hdr.length() > 0) {
StringBuffer buf = new StringBuffer(hdr);
if(facilityPrinting) {
buf.append(facilityStr);
}
buf.append(packet);
packet = buf.toString();
}
sqw.setLevel(event.getLevel().getSyslogEquivalent());
//
// if message has a remote likelihood of exceeding 1024 bytes
// when encoded, consider splitting message into multiple packets
if (packet.length() > 256) {
splitPacket(hdr, packet);
} else {
sqw.write(packet);
}
if (layout.ignoresThrowable()) {
String[] s = event.getThrowableStrRep();
if (s != null) {
for(int i = 0; i < s.length; i++) {
if (s[i].startsWith("\t")) {
sqw.write(hdr+TAB+s[i].substring(1));
} else {
sqw.write(hdr+s[i]);
}
}
}
}
}
|
public synchronized void close() {
closed = true;
if (sqw != null) {
try {
if (layoutHeaderChecked && layout != null && layout.getFooter() != null) {
sendLayoutMessage(layout.getFooter());
}
sqw.close();
sqw = null;
} catch(java.io.IOException ex) {
sqw = null;
}
}
}
Release any resources held by this SyslogAppender. |
public String getFacility() {
return getFacilityString(syslogFacility);
}
Returns the value of the Facility option. |
public static int getFacility(String facilityName) {
if(facilityName != null) {
facilityName = facilityName.trim();
}
if("KERN".equalsIgnoreCase(facilityName)) {
return LOG_KERN;
} else if("USER".equalsIgnoreCase(facilityName)) {
return LOG_USER;
} else if("MAIL".equalsIgnoreCase(facilityName)) {
return LOG_MAIL;
} else if("DAEMON".equalsIgnoreCase(facilityName)) {
return LOG_DAEMON;
} else if("AUTH".equalsIgnoreCase(facilityName)) {
return LOG_AUTH;
} else if("SYSLOG".equalsIgnoreCase(facilityName)) {
return LOG_SYSLOG;
} else if("LPR".equalsIgnoreCase(facilityName)) {
return LOG_LPR;
} else if("NEWS".equalsIgnoreCase(facilityName)) {
return LOG_NEWS;
} else if("UUCP".equalsIgnoreCase(facilityName)) {
return LOG_UUCP;
} else if("CRON".equalsIgnoreCase(facilityName)) {
return LOG_CRON;
} else if("AUTHPRIV".equalsIgnoreCase(facilityName)) {
return LOG_AUTHPRIV;
} else if("FTP".equalsIgnoreCase(facilityName)) {
return LOG_FTP;
} else if("LOCAL0".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL0;
} else if("LOCAL1".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL1;
} else if("LOCAL2".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL2;
} else if("LOCAL3".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL3;
} else if("LOCAL4".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL4;
} else if("LOCAL5".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL5;
} else if("LOCAL6".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL6;
} else if("LOCAL7".equalsIgnoreCase(facilityName)) {
return LOG_LOCAL7;
} else {
return -1;
}
}
Returns the integer value corresponding to the named syslog
facility, or -1 if it couldn't be recognized. |
public boolean getFacilityPrinting() {
return facilityPrinting;
}
Returns the value of the FacilityPrinting option. |
public static String getFacilityString(int syslogFacility) {
switch(syslogFacility) {
case LOG_KERN: return "kern";
case LOG_USER: return "user";
case LOG_MAIL: return "mail";
case LOG_DAEMON: return "daemon";
case LOG_AUTH: return "auth";
case LOG_SYSLOG: return "syslog";
case LOG_LPR: return "lpr";
case LOG_NEWS: return "news";
case LOG_UUCP: return "uucp";
case LOG_CRON: return "cron";
case LOG_AUTHPRIV: return "authpriv";
case LOG_FTP: return "ftp";
case LOG_LOCAL0: return "local0";
case LOG_LOCAL1: return "local1";
case LOG_LOCAL2: return "local2";
case LOG_LOCAL3: return "local3";
case LOG_LOCAL4: return "local4";
case LOG_LOCAL5: return "local5";
case LOG_LOCAL6: return "local6";
case LOG_LOCAL7: return "local7";
default: return null;
}
}
Returns the specified syslog facility as a lower-case String,
e.g. "kern", "user", etc. |
public final boolean getHeader() {
return header;
}
If true, the appender will generate the HEADER part (that is, timestamp and host name)
of the syslog packet. Default value is false for compatibility with existing behavior,
however should be true unless there is a specific justification. |
public String getSyslogHost() {
return syslogHost;
}
Returns the value of the SyslogHost option. |
public boolean requiresLayout() {
return true;
}
The SyslogAppender requires a layout. Hence, this method returns
true. |
public void setFacility(String facilityName) {
if(facilityName == null)
return;
syslogFacility = getFacility(facilityName);
if (syslogFacility == -1) {
System.err.println("["+facilityName +
"] is an unknown syslog facility. Defaulting to [USER].");
syslogFacility = LOG_USER;
}
this.initSyslogFacilityStr();
// If there is already a sqw, make it use the new facility.
if(sqw != null) {
sqw.setSyslogFacility(this.syslogFacility);
}
}
Set the syslog facility. This is the Facility option.
The facilityName parameter must be one of the
strings KERN, USER, MAIL, DAEMON, AUTH, SYSLOG, LPR, NEWS, UUCP,
CRON, AUTHPRIV, FTP, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4,
LOCAL5, LOCAL6, LOCAL7. Case is unimportant. |
public void setFacilityPrinting(boolean on) {
facilityPrinting = on;
}
If the FacilityPrinting option is set to true, the printed
message will include the facility name of the application. It is
false by default. |
public final void setHeader(boolean val) {
header = val;
}
Returns whether the appender produces the HEADER part (that is, timestamp and host name)
of the syslog packet. |
public void setSyslogHost(String syslogHost) {
this.sqw = new SyslogQuietWriter(new SyslogWriter(syslogHost),
syslogFacility, errorHandler);
//this.stp = new SyslogTracerPrintWriter(sqw);
this.syslogHost = syslogHost;
}
The SyslogHost option is the name of the the syslog host
where log output should go. A non-default port can be specified by
appending a colon and port number to a host name,
an IPv4 address or an IPv6 address enclosed in square brackets.
WARNING If the SyslogHost is not set, then this appender
will fail. |