⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syslogappender.java

📁 apache的log4j源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    } else if("LOCAL6".equalsIgnoreCase(facilityName)) {      return LOG_LOCAL6;    } else if("LOCAL7".equalsIgnoreCase(facilityName)) {      return LOG_LOCAL7;    } else {      return -1;    }  }  private void splitPacket(final String header, final String packet) {      int byteCount = packet.getBytes().length;      //      //   if packet is less than RFC 3164 limit      //      of 1024 bytes, then write it      //      (must allow for up 5to 5 characters in the PRI section      //          added by SyslogQuietWriter)      if (byteCount <= 1019) {          sqw.write(packet);      } else {          int split = header.length() + (packet.length() - header.length())/2;          splitPacket(header, packet.substring(0, split) + "...");          splitPacket(header, header + "..." + packet.substring(split));      }        }  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]);            }        }      }    }  }  /**     This method returns immediately as options are activated when they     are set.  */  public  void activateOptions() {      if (header) {        getLocalHostname();      }      if (layout != null && layout.getHeader() != null) {          sendLayoutMessage(layout.getHeader());      }      layoutHeaderChecked = true;  }  /**     The SyslogAppender requires a layout. Hence, this method returns     <code>true</code>.     @since 0.8.4 */  public  boolean requiresLayout() {    return true;  }  /**    The <b>SyslogHost</b> 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.    <b>WARNING</b> If the SyslogHost is not set, then this appender    will fail.   */  public  void setSyslogHost(final String syslogHost) {    this.sqw = new SyslogQuietWriter(new SyslogWriter(syslogHost),				     syslogFacility, errorHandler);    //this.stp = new SyslogTracerPrintWriter(sqw);    this.syslogHost = syslogHost;  }  /**     Returns the value of the <b>SyslogHost</b> option.   */  public  String getSyslogHost() {    return syslogHost;  }  /**     Set the syslog facility. This is the <b>Facility</b> option.     <p>The <code>facilityName</code> 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.     @since 0.8.1 */  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);    }  }  /**     Returns the value of the <b>Facility</b> option.   */  public  String getFacility() {    return getFacilityString(syslogFacility);  }  /**    If the <b>FacilityPrinting</b> option is set to true, the printed    message will include the facility name of the application. It is    <em>false</em> by default.   */  public  void setFacilityPrinting(boolean on) {    facilityPrinting = on;  }  /**     Returns the value of the <b>FacilityPrinting</b> option.   */  public  boolean getFacilityPrinting() {    return facilityPrinting;  }  /**   * 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.   * @since 1.2.15  */  public final boolean getHeader() {      return header;  }    /**     * Returns whether the appender produces the HEADER part (that is, timestamp and host name)     * of the syslog packet.     * @since 1.2.15    */  public final void setHeader(final boolean val) {      header = val;  }    /**     * Get the host name used to identify this appender.     * @return local host name     * @since 1.2.15     */  private String getLocalHostname() {      if (localHostname == null) {          try {            InetAddress addr = InetAddress.getLocalHost();            localHostname = addr.getHostName();          } catch (UnknownHostException uhe) {            localHostname = "UNKNOWN_HOST";          }      }      return localHostname;  }    /**     * Gets HEADER portion of packet.     * @param timeStamp number of milliseconds after the standard base time.     * @return HEADER portion of packet, will be zero-length string if header is false.     * @since 1.2.15     */  private String getPacketHeader(final long timeStamp) {      if (header) {        StringBuffer buf = new StringBuffer(dateFormat.format(new Date(timeStamp)));        //  RFC 3164 says leading space, not leading zero on days 1-9        if (buf.charAt(4) == '0') {          buf.setCharAt(4, ' ');        }        buf.append(getLocalHostname());        buf.append(' ');        return buf.toString();      }      return "";  }    /**     * Set header or footer of layout.     * @param msg message body, may not be null.     */  private void sendLayoutMessage(final String msg) {      if (sqw != null) {          String packet = msg;          String hdr = getPacketHeader(new Date().getTime());          if(facilityPrinting || hdr.length() > 0) {              StringBuffer buf = new StringBuffer(hdr);              if(facilityPrinting) {                  buf.append(facilityStr);              }              buf.append(msg);              packet = buf.toString();          }          sqw.setLevel(6);          sqw.write(packet);      }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -