2 * SPDX-License-Identifier: MIT
4 * Copyright (C) 2022 EfficiOS Inc.
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
;
19 * Example application using the LTTng-UST Java log4j agent.
22 * To obtain LTTng trace events, you should run the following sequence of
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>
37 public class HelloLog4j2Prog
{
42 * @param args Command-line arguments
44 public static void main(String args
[]) {
46 ConfigurationBuilder
<BuiltConfiguration
> builder
= ConfigurationBuilderFactory
.newConfigurationBuilder();
49 LayoutComponentBuilder standardLayout
= builder
.newLayout("PatternLayout");
50 standardLayout
.addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable");
52 /* Create a console appender */
53 AppenderComponentBuilder appenderBuilder
= builder
.newAppender("Stdout", "Console");
54 appenderBuilder
.add(standardLayout
);
55 builder
.add(appenderBuilder
);
57 /* Create an Lttng appender for the LOG4J domain */
58 appenderBuilder
= builder
.newAppender("Lttng1", "Lttng");
59 appenderBuilder
.addAttribute("domain", "LOG4J");
60 builder
.add(appenderBuilder
);
62 /* Create an Lttng appender for the LOG4J2 domain */
63 appenderBuilder
= builder
.newAppender("Lttng2", "Lttng");
64 appenderBuilder
.addAttribute("domain", "LOG4J2");
65 builder
.add(appenderBuilder
);
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
);
74 Configurator
.initialize(builder
.build());
76 Logger logger
= LogManager
.getLogger(HelloLog4j2Prog
.class);
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");