gpt4 book ai didi

java - 我的代码可以在没有正常字体模式的情况下登录到 Wildfly 控制台(占用线路)吗?

转载 作者:行者123 更新时间:2023-12-01 10:07:06 24 4
gpt4 key购买 nike

我想在我的 MessageDrivenBean 和 SessionBeans 中使用 Java 的 Logger 以我自己的格式写入 WildFly 的控制台和日志文件。

我尝试将其添加到standalone.xml

   <console-handler name="MY-CONSOLE-HANDLER">
<level name="INFO"/>
<formatter>
<named-formatter name="MY-PATTERN"/>
</formatter>
</console-handler>

<logger category="MY-LOGGER" use-parent-handlers="false">
<level name="DEBUG"/>
<handlers>
<handler name="MY-CONSOLE-HANDLER"/>
</handlers>
</logger>
<console-handler name="MY-CONSOLE-HANDLER">
<level name="INFO"/>
<formatter>
<named-formatter name="MY-PATTERN"/>
</formatter>
</console-handler>
<formatter name="MY-PATTERN">
<pattern-formatter pattern="%n"/>
</formatter>

这在我的 MessageDrivenBean 中:

private static Logger  logger  = Logger.getLogger("MY-LOGGGER");
@PostConstruct
public void myInit () {
System.out.println("logger.info(\"My Test Message 1\")" );
logger.info("My Test Message 1");
}

---------我明白了 --------

...
17:29:22,600 INFO INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 9.0.2.Final (WildFly Core 1.0.2.Final) started in 6834ms - Started 602 of 788 services (264 services are lazy, passive or on-demand)
...
17:30:04,324 INFO [stdout] (Thread-1 (HornetQ-client-global-threads-463164371)) About to try: logger.info("My Test Message 1")
17:30:04,324 INFO [MY-LOGGGER] (Thread-1 (HornetQ-client-global-threads-463164371)) My Test Message 1
...

--------- 但我想要这个 --------

...
17:29:22,600 INFO INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 9.0.2.Final (WildFly Core 1.0.2.Final) started in 6834ms - Started 602 of 788 services (264 services are lazy, passive or on-demand)
...
About to try: logger.info("My Test Message 1")
My Test Message 1
...
<小时/>

所以我想第一个问题是:我是否可以将日志写入控制台,而无需所有模式信息占据一半页面,并且不会弄乱模式信息 Wildfly放在它所写的行前面?

如果是这样,有人能给我指出正确的方向来完成这项工作吗?显然我还没有掌握 Java Logger 的方法,并且还找不到一个简单的示例作为该知识树的起点。我真的需要一个简单的东西作为 anchor 。

注意:仅供引用:我尝试实例化自己的 Handler 和 Formatter 类。然后使用以下代码获取 MY-LOGGER get 并用我的处理程序替换其处理程序:

private static Logger  logger  = Logger.getLogger("MY-LOGGGER");
@PostConstruct
public void myInit () {
Handler[] handlers = logger.getHandlers();
for (Handler handler : handlers) {
logger.removeHandler(handler);
}
logger.addHandler(GO_TEST_HANDLER);
System.out.println("logger.info(\"My Test Message 1\")" );
logger.info("My Test Message 1");
}

那并没有发生任何事情(但无论如何这里都是类)

public class GoTestHandler extends StreamHandler {
public GoTestHandler() {
super();
this.setFormatter(new GoTestFormatter());
}
}

。 公共(public)类 GoTestFormatter 扩展 Formatter {

  @Override
public String format(LogRecord record) {
StringBuffer sb = new StringBuffer();
sb.append("XXX "); // the XXX is just to see if this method ever got used
sb.append(this.formatMessage (record));
System.out.println("From GoTestFormater.format()");
return sb.toString();
}
}

有什么帮助吗?

最佳答案

我建议不要直接编辑 XML。无论如何,XML 片段看起来都不正确。您有两个同名的控制台处理程序。模式处理程序也不正确。 %n 将只打印一个新行,不显示任何消息。

此外,您也不想打扰日志管理器。好吧,如果您至少不这样做,容器会更喜欢:)在某些时候,如果您尝试更改它,它可能会被锁定并抛出异常。

所有这些都表明你正在做的事情应该有效。以下是一些用于根据您的意图设置日志子系统的 CLI 命令:

/subsystem=logging/pattern-formatter=MY-PATTERN:add(pattern="%s%n")
/subsystem=logging/console-handler=MY-CONSOLE:add(named-formatter="MY-PATTERN", autoflush=true, target="System.out")
/subsystem=logging/logger=MY-LOGGER:add(use-parent-handlers=false, level=INFO, handlers=["MY-CONSOLE"])

关于java - 我的代码可以在没有正常字体模式的情况下登录到 Wildfly 控制台(占用线路)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com