Add LOG4J2 domain to the Log4j 2.x agent
[lttng-ust.git] / doc / examples / java-log4j2-prog / HelloLog4j2Prog.java
1 /*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright (C) 2022 EfficiOS Inc.
5 */
6
7 import org.apache.logging.log4j.Level;
8 import org.apache.logging.log4j.LogManager;
9 import org.apache.logging.log4j.Logger;
10 import org.apache.logging.log4j.core.config.Configurator;
11 import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder;
12 import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
13 import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
14 import org.apache.logging.log4j.core.config.builder.api.LayoutComponentBuilder;
15 import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder;
16 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
17
18 /**
19 * Example application using the LTTng-UST Java log4j agent.
20 *
21 * <p>
22 * To obtain LTTng trace events, you should run the following sequence of
23 * commands:
24 * </p>
25 *
26 * <ul>
27 * <li>$ lttng create</li>
28 * <li>$ lttng enable-event -l -a</li>
29 * <li>$ lttng start</li>
30 * <li>(run this program)</li>
31 * <li>$ lttng stop</li>
32 * <li>$ lttng view</li>
33 * <li>$ lttng destroy</li>
34 * </ul>
35 *
36 */
37 public class HelloLog4j2Prog {
38
39 /**
40 * Application start
41 *
42 * @param args Command-line arguments
43 */
44 public static void main(String args[]) {
45
46 ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
47
48 /* Layout */
49 LayoutComponentBuilder standardLayout = builder.newLayout("PatternLayout");
50 standardLayout.addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable");
51
52 /* Create a console appender */
53 AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "Console");
54 appenderBuilder.add(standardLayout);
55 builder.add(appenderBuilder);
56
57 /* Create an Lttng appender for the LOG4J domain */
58 appenderBuilder = builder.newAppender("Lttng1", "Lttng");
59 appenderBuilder.addAttribute("domain", "LOG4J");
60 builder.add(appenderBuilder);
61
62 /* Create an Lttng appender for the LOG4J2 domain */
63 appenderBuilder = builder.newAppender("Lttng2", "Lttng");
64 appenderBuilder.addAttribute("domain", "LOG4J2");
65 builder.add(appenderBuilder);
66
67 /* Create a root logger with both appenders attached */
68 RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.DEBUG);
69 rootLogger.add(builder.newAppenderRef("Stdout"));
70 rootLogger.add(builder.newAppenderRef("Lttng1"));
71 rootLogger.add(builder.newAppenderRef("Lttng2"));
72 builder.add(rootLogger);
73
74 Configurator.initialize(builder.build());
75
76 Logger logger = LogManager.getLogger(HelloLog4j2Prog.class);
77
78 /* Trigger some tracing events using the Log4j Logger created before. */
79 logger.info("Prog config: Hello World, the answer is " + 42);
80 logger.info("Prog config: Another info event");
81 logger.error("Prog config: An error event");
82 }
83 }
This page took 0.033673 seconds and 4 git commands to generate.