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

📄 syslogappendertest.java

📁 apache的log4j源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    appender.setName("foo");    appender.setThreshold(Level.INFO);    VectorErrorHandler errorHandler = new VectorErrorHandler();    appender.setErrorHandler(errorHandler);    appender.setLayout(new PatternLayout("%m%n"));    appender.activateOptions();    Logger logger = Logger.getRootLogger();    logger.addAppender(appender);    logger.info(      "Should not be logged by SyslogAppenderTest.testAppendNoHost.");    assertEquals(1, errorHandler.size());    //    //  Appender is misspelled in implementation    //    assertEquals(      "No syslog host is set for SyslogAppedender named \"foo\".",      errorHandler.getMessage(0));  }  /**   * Tests append method under normal conditions.   */  public void testAppend() {    SyslogAppender appender = new SyslogAppender();    appender.setName("foo");    appender.setThreshold(Level.INFO);    appender.setSyslogHost("localhost");    appender.setFacility("user");    appender.setLayout(new PatternLayout("%m%n"));    VectorErrorHandler errorHandler = new VectorErrorHandler();    appender.setErrorHandler(errorHandler);    appender.activateOptions();    //    //  wrap SyslogAppender with an Async since appender may    //    hang if syslogd is not accepting network messages    //    AsyncAppender asyncAppender = new AsyncAppender();    asyncAppender.addAppender(appender);    asyncAppender.activateOptions();    Logger logger = Logger.getRootLogger();    logger.addAppender(asyncAppender);    Exception e =      new Exception("Expected exception from SyslogAppenderTest.testAppend");    logger.info(      "Expected message from log4j unit test SyslogAppenderTest.testAppend.", e);    assertEquals(0, errorHandler.size());  }  /**    *  Tests SyslogAppender with IPv6 address.    */  public void testIPv6() {      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("::1");  }  /**    *  Tests SyslogAppender with IPv6 address enclosed in square brackets.    */  public void testIPv6InBrackets() {      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("[::1]");  }  /**    *  Tests SyslogAppender with IPv6 address enclosed in square brackets    *     followed by port specification.    */  public void testIPv6AndPort() {      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("[::1]:1514");  }  /**    *  Tests SyslogAppender with host name enclosed in square brackets    *     followed by port specification.    */  public void testHostNameAndPort() {      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("localhost:1514");  }  /**    *  Tests SyslogAppender with IPv4 address followed by port specification.    */  public void testIPv4AndPort() {      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("127.0.0.1:1514");  }    private static String[] log(final boolean header,                                final String msg,                                final Exception ex,                                final int packets) throws Exception {        DatagramSocket ds = new DatagramSocket();        ds.setSoTimeout(2000);      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("localhost:" + ds.getLocalPort());      appender.setName("name");      appender.setHeader(header);      PatternLayout pl = new PatternLayout("%m");      appender.setLayout(pl);      appender.activateOptions();      Logger l = Logger.getRootLogger();      l.addAppender(appender);      if (ex == null) {        l.info(msg);      } else {        l.error(msg, ex);      }      appender.close();      String[] retval = new String[packets];      byte[] buf = new byte[1000];      for(int i = 0; i < packets; i++) {          DatagramPacket p = new DatagramPacket(buf, 0, buf.length);          ds.receive(p);          retval[i] = new String(p.getData(), 0, p.getLength());      }      ds.close();      return retval;    }    public void testActualLogging() throws Exception {      String s = log(false, "greetings", null, 1)[0];      StringTokenizer st = new StringTokenizer(s, "<>() ");      assertEquals("14", st.nextToken());      assertEquals("greetings", st.nextToken());    }    /**     * Exception with printStackTrace that breaks earlier SyslogAppender.     */    private static class MishandledException extends Exception {        /*         *   Create new instance.         */        public MishandledException() {        }        /**         * Print stack trace.         * @param w print writer, may not be null.         */        public void printStackTrace(final java.io.PrintWriter w) {             w.println("Mishandled stack trace follows:");             w.println("");             w.println("No tab here");             w.println("\ttab here");             w.println("\t");        }    }    /**     * Tests fix for bug 40502.     * @throws Exception on IOException.     */    public void testBadTabbing() throws Exception {        String[] s = log(false, "greetings", new MishandledException(), 6);        StringTokenizer st = new StringTokenizer(s[0], "<>() ");        assertEquals("11", st.nextToken());        assertEquals("greetings", st.nextToken());        assertEquals("<11>Mishandled stack trace follows:", s[1]);        assertEquals("<11>", s[2]);        assertEquals("<11>No tab here", s[3]);        assertEquals("<11>" + SyslogAppender.TAB + "tab here", s[4]);        assertEquals("<11>" + SyslogAppender.TAB, s[5]);    }    /**     * Tests presence of timestamp if header = true.     *     * @throws Exception if IOException.     */    public void testHeaderLogging() throws Exception {      Date preDate = new Date();      String s = log(true, "greetings", null, 1)[0];      Date postDate = new Date();      assertEquals("<14>", s.substring(0, 4));      String syslogDateStr = s.substring(4, 20);      SimpleDateFormat fmt = new SimpleDateFormat("MMM dd HH:mm:ss ", Locale.ENGLISH);      Date syslogDate = fmt.parse(syslogDateStr);      Calendar cal = Calendar.getInstance(Locale.ENGLISH);      cal.setTime(syslogDate);      int syslogMonth = cal.get(Calendar.MONTH);      int syslogDay = cal.get(Calendar.DATE);      if (syslogDay < 10) {          assertEquals(' ', syslogDateStr.charAt(4));      }      cal.setTime(preDate);      int preMonth = cal.get(Calendar.MONTH);      cal.set(Calendar.MILLISECOND, 0);      preDate = cal.getTime();      int syslogYear;      if (preMonth == syslogMonth) {          syslogYear = cal.get(Calendar.YEAR);      } else {          cal.setTime(postDate);          syslogYear = cal.get(Calendar.YEAR);      }      cal.setTime(syslogDate);      cal.set(Calendar.YEAR, syslogYear);      syslogDate = cal.getTime();      assertTrue(syslogDate.compareTo(preDate) >= 0);      assertTrue(syslogDate.compareTo(postDate) <= 0);    }    /**     * Tests that any header or footer in layout is sent.     * @throws Exception if exception during test.     */    public void testLayoutHeader() throws Exception {        DatagramSocket ds = new DatagramSocket();        ds.setSoTimeout(2000);      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("localhost:" + ds.getLocalPort());      appender.setName("name");      appender.setHeader(false);      HTMLLayout pl = new HTMLLayout();      appender.setLayout(pl);      appender.activateOptions();      Logger l = Logger.getRootLogger();      l.addAppender(appender);      l.info("Hello, World");      appender.close();      String[] s = new String[3];      byte[] buf = new byte[1000];      for(int i = 0; i < 3; i++) {          DatagramPacket p = new DatagramPacket(buf, 0, buf.length);          ds.receive(p);          s[i] = new String(p.getData(), 0, p.getLength());      }      ds.close();      assertEquals("<14><!DOCTYPE", s[0].substring(0,13));      assertEquals("<14></table>", s[2].substring(0,12));    }    /**     * Tests that syslog packets do not exceed 1024 bytes.     * See bug 42087.     * @throws Exception if exception during test.     */    public void testBigPackets() throws Exception {        DatagramSocket ds = new DatagramSocket();        ds.setSoTimeout(2000);      SyslogAppender appender = new SyslogAppender();      appender.setSyslogHost("localhost:" + ds.getLocalPort());      appender.setName("name");      appender.setHeader(false);      PatternLayout pl = new PatternLayout("%m");      appender.setLayout(pl);      appender.activateOptions();      Logger l = Logger.getRootLogger();      l.addAppender(appender);      StringBuffer msgbuf = new StringBuffer();      while(msgbuf.length() < 8000) {          msgbuf.append("0123456789");      }      String msg = msgbuf.toString();      l.info(msg);      appender.close();      String[] s = new String[8];      byte[] buf = new byte[1200];      for(int i = 0; i < 8; i++) {          DatagramPacket p = new DatagramPacket(buf, 0, buf.length);          ds.receive(p);          assertTrue(p.getLength() <= 1024);          s[i] = new String(p.getData(), 0, p.getLength());      }      ds.close();      StringBuffer rcvbuf = new StringBuffer(s[0]);      rcvbuf.delete(0, 4);      for(int i = 1; i < 8; i++) {          rcvbuf.setLength(rcvbuf.length() - 3);          rcvbuf.append(s[i].substring(s[i].indexOf("...") + 3));      }      assertEquals(msg.length(), rcvbuf.length());      assertEquals(msg, rcvbuf.toString());    }}

⌨️ 快捷键说明

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