1   /**
2    * Logback: the generic, reliable, fast and flexible logging framework.
3    * 
4    * Copyright (C) 1999-2006, QOS.ch
5    * 
6    * This library is free software, you can redistribute it and/or modify it under
7    * the terms of the GNU Lesser General Public License as published by the Free
8    * Software Foundation.
9    */
10  
11  package ch.qos.logback.classic.net;
12  
13  import java.io.InputStreamReader;
14  
15  import org.slf4j.LoggerFactory;
16  
17  import ch.qos.logback.classic.BasicConfigurator;
18  import ch.qos.logback.classic.Logger;
19  import ch.qos.logback.classic.LoggerContext;
20  
21  public class SocketMin {
22  
23    static Logger logger = (Logger) LoggerFactory.getLogger(SocketMin.class
24        .getName());
25    static SocketAppender s;
26  
27    public static void main(String argv[]) {
28      if (argv.length == 3) {
29        init(argv[0], argv[1]);
30      } else {
31        usage("Wrong number of arguments.");
32      }
33  
34      // NDC.push("some context");
35      if (argv[2].equals("true")) {
36        loop();
37      } else {
38        test();
39      }
40  
41      s.stop();
42    }
43  
44    static void usage(String msg) {
45      System.err.println(msg);
46      System.err.println("Usage: java " + SocketMin.class
47          + " host port true|false");
48      System.exit(1);
49    }
50  
51    static void init(String host, String portStr) {
52      Logger root = (Logger) LoggerFactory.getLogger(LoggerContext.ROOT_NAME);
53      BasicConfigurator.configure(root.getLoggerContext());
54      try {
55        int port = Integer.parseInt(portStr);
56        logger.info("Creating socket appender (" + host + "," + port + ").");
57        s = new SocketAppender(host, port);
58        s.setName("S");
59        root.addAppender(s);
60      } catch (java.lang.NumberFormatException e) {
61        e.printStackTrace();
62        usage("Could not interpret port number [" + portStr + "].");
63      } catch (Exception e) {
64        System.err.println("Could not start!");
65        e.printStackTrace();
66        System.exit(1);
67      }
68    }
69  
70    static void loop() {
71      Logger root = (Logger) LoggerFactory.getLogger(LoggerContext.ROOT_NAME);
72      InputStreamReader in = new InputStreamReader(System.in);
73      System.out.println("Type 'q' to quit");
74      int i;
75      int k = 0;
76      while (true) {
77        logger.debug("Message " + k++);
78        logger.info("Message " + k++);
79        logger.warn("Message " + k++);
80        logger.error("Message " + k++, new Exception("Just testing"));
81        try {
82          i = in.read();
83        } catch (Exception e) {
84          return;
85        }
86        if (i == -1)
87          break;
88        if (i == 'q')
89          break;
90        if (i == 'r') {
91          System.out.println("Removing appender S");
92          root.detachAppender("S");
93        }
94      }
95    }
96  
97    static void test() {
98      int i = 0;
99      logger.debug("Message " + i++);
100     logger.info("Message " + i++);
101     logger.warn("Message " + i++);
102     logger.error("Message " + i++);
103     logger.debug("Message " + i++, new Exception("Just testing."));
104   }
105 }