1
2
3
4
5
6
7
8
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
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 }