gpt4 book ai didi

java - 如何登录 Undertow 嵌入式服务器中的文件?

转载 作者:行者123 更新时间:2023-12-02 09:36:21 28 4
gpt4 key购买 nike

我有一个简单的示例,其中我实现了一个访问日志处理程序。它确实记录到控制台。如何配置记录器记录到指定文件?

package com.zetcode;

import io.undertow.Undertow;
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.server.handlers.accesslog.AccessLogHandler;
import io.undertow.server.handlers.accesslog.JBossLoggingAccessLogReceiver;
import io.undertow.util.Headers;

class MyHandler implements HttpHandler {

@Override
public void handleRequest(HttpServerExchange exchange) {

exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
exchange.getResponseSender().send("Hello there");
}
}

public class UndertowLogEx {

public static void main(String[] args) {

Undertow server = Undertow.builder()
.addHttpListener(8080, "0.0.0.0")
.setHandler(new AccessLogHandler(new MyHandler(), new JBossLoggingAccessLogReceiver(),
"combined", UndertowLogEx.class.getClassLoader()))
.build();

server.start();
}
}

最佳答案

JBossLoggingAccessLogReceiver 将访问日志记录到 jboss-logging 外观。 jboss-logging 外观将记录到您配置的任何日志管理器。如果您配置了控制台处理程序,它将记录到控制台。

如果您想登录到文件,可以使用DefaultAccessLogReceiver

final ExecutorService executor = Executors.newSingleThreadExecutor();
DefaultAccessLogReceiver.Builder builder = DefaultAccessLogReceiver.builder().setLogWriteExecutor(executor)
.setOutputDirectory(Paths.get("/var/log/undertow"))
.setLogBaseName("access-log.")
.setLogNameSuffix("log")
.setRotate(true);

Undertow server = Undertow.builder()
.addHttpListener(8080, "0.0.0.0")
.setHandler(new AccessLogHandler(new MyHandler(), builder.build(),
"combined", UndertowUrlRewrite.class.getClassLoader()))
.build();

server.start();

关于java - 如何登录 Undertow 嵌入式服务器中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57478663/

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